• Java


    Java中的8个基本类型都对应一个包装类

      byte → Byte

      short → Short

      int → Integer

      long → Long

      float → Float

      double → Double

      char → Character

      boolean→ Boolean

    每个包装类中都有一个静态的方法来将java的基本数据类型转换为包装类,这个静态方法接受一个对应的基本类型参数然后返回一个包装类的引用:

      Java 1.5版本之后 增加了自动装箱、拆箱机制,提供基本数据类型包装类型的相互转换操作。

    自动装箱即自动将基本数据类型转换成包装类型:

    public class TestUtil {
        public static void main(String[] args){
            //JDK1.5之前 不可以自动装箱
            Integer i1 = new Integer(100);
            Integer i2 = Integer.valueOf(100);
            //1.5之后 可以自动装箱
            Integer i3 = 100;
        //原理  Integer i3 = Integer.valueOf((int)100); System.out.println(i1); System.out.println(i2); System.out.println(i3); } }

    自动拆箱即自动将包装类型转换成基本数据类型,与自动装箱相反:

    public class TestUtil {
        public static void main(String[] args){
            //JDK1.5之前 不可以自动装箱
            Integer i1 = new Integer(100);
            Integer i2 = Integer.valueOf(100);
            //1.5之后 可以自动装箱
            Integer i3 = 100;
    
            //自动拆箱
            int i4 = i1;
            //自动拆箱的原理  调用intValue
            int i5 = i1.intValue();
    
            System.out.println(i4);
            System.out.println(i5);
    
        }
    }
    输出结果
    100
    100
    public class TestUtil {
        public static void main(String[] args){
            //将数字字符串转换为int类型数字
    
            //将String直接转换为int类型
            int value1 = Integer.parseInt("123");
            //先将String构成一个Integer对象,然后拆分
            int value2 = new Integer("123");
            System.out.println(value1);
            System.out.println(value2);
    
        }
    }
    输出结果:
    123
    123

    笔试题

    public class TestUtil {
        public static void main(String[] args){
            //将数字字符串转换为int类型数字
            Integer i1 = 10;//10自动包装成Integer对象  不是常量区的10,而是存放在静态元素区的10
            Integer i2 = 10;//与i1同时指向静态元素区的10
            Integer i3 = new Integer(10);// 新new 的一个对象 10
            Integer i4 = new Integer(10);//再new一个
            System.out.println(i1 == i2);//== 比较变量里的内容(地址)
            System.out.println(i1 == i3);
            System.out.println(i3 == i4);
            System.out.println(i1.equals(i2));//重写了 比值, 不是Object里的equals ,
            System.out.println(i1.equals(i3));
            System.out.println(i2.equals(i4));
    
        }
    }
    输出结果:
    true
    false
    false
    true
    true
    true

    1.==与equals()区别
        ==可以比较基本数据类型  也可以比较引用数据类型  (变量中存储的内容)
        如果比较基本类型比较是变量中存储的值
        如果比较引用类型比较是变量中存储的地址引用
        equals()是Object类中继承过来的方法  每一个引用类型都可以调用
        默认继承的equals()方法比较与==一致  如果想要改变比较规则 可以重写equals方法
        由于Integer类就重写了equals() 所以Integer比较的是数值


      2.考察Integer类加载的时候  自己有一个静态的空间
        空间内立即加载 Integer类型的数组  内存储256个Integer对象   -128 ~ 127
        如果我们用的对象范围在这之内Integer i1 = 10;  直接取静态区中找对应的对象
        如果我们用的对象范围超出了这个Integer i1 = 1000;  会帮我们创建一个新的Integer对象

  • 相关阅读:
    Log4Net使用指南
    Log4net 写文件日志与数据库日志
    JSON-Schema 最科学的表单验证模式
    番茄时间工作法
    css 温故而知新 1px的问题
    $.ajax 温故而知新坑
    H5中滚动卡顿的问题
    横向思维
    Wd 西部数据
    使用AlloyLever来搞定开发调试发布,错误监控上报,用户问题定位
  • 原文地址:https://www.cnblogs.com/yyanghang/p/11166808.html
Copyright © 2020-2023  润新知