Java基本类型和包装类
程序员文章站
2022-06-14 16:53:43
...
-
基本类型。
byte、short、int、long、float、double、char和boolean。
-
包装类。
Byte、Short、Integer、Long、Float、Double、Character和Boolean。
-
基本类型所占字节数及默认值。
基本类型 所占字节 取值范围 默认值 byte 1 ~ 0 short 2 ~ 0 int 4 ~ 0 long 8 ~ 0 float 4 3.402823e+38 ~ 1.401298e-45 0.0F double 8 1.797693e+308~ 4.9000000e-324 0.0D char 2 ‘’ boolean 1 0/1 false -
包装类默认值为null。
-
基本类型
==
比较的是值。byte a = 1; byte b = 1; System.out.println(a == b); // true
-
包装类
==
比较的是地址,两个new出来的包装类,会在堆中生成一个对象,==
操作返回false。Integer a = new Integer(1); Integer b = new Integer(1); System.out.println(a == b); // false
-
一个new出来的包装类和一个非new出来的包装类进行
==
比较,两者地址不同,返回false。Integer a = 1; Integer b = new Integer(1);
-
包装类除了Float和Double,其他的类型的值保存在常量池中,Integer在常量池中缓存的值的范围是[-128,127],超过这个范围会重新new一个对象,放在堆中。
Character a = 'a'; Character b = 'a'; System.out.println(a == b); // true Float c = 0.1F; Float d = 0.1F; System.out.println(c == d); // false Integer e = 1; Integer f = 1; System.out.println(e == f); // true Integer g = 128; Integer h = 128; System.out.println(g == h); // false
-
基本类型和对应的包装类进行比较,包装类会自动拆箱,
==
比较两者的值。int a = 1; Integer b = 1; System.out.println(a == b); // true
-
不同的基本类型进行
==
比较,会发生隐式类型转换,比较两者的值。int a = 1; byte b = 1; System.out.println(a == b); // true,byte会转为int
-
不同的包装类型不能进行
==
比较,会发生编译错误。Integer a = 1; Byte b = 1; System.out.println(a == b); // error,不可比较的类型:java.lang.Integer和java.lang.Byte
推荐阅读