您的位置:首页 > 编程语言 > Java开发

Java基本数据类型的比较

2016-08-02 09:55 155 查看
一、byte, short, int, long四种基本数据类型以及其包装类的比较:
int i = 100;
Integer i1 = 100;
Integer i2 = 100;
Integer i3 = new Integer(100);
Integer i4 = new Integer(100);
Integer i5 = 300;
Integer i6 = 300;
System.out.println(i == i1);// true;i1自动拆箱
System.out.println(i == i3);// true; i3自动拆箱
System.out.println(i1 == i2);// true; i1和i3都指向常量池中同一个地址
System.out.println(i1 == i3);// false; 两个不同的对象
System.out.println(i3 == i4);// false; 两个不同的对象
System.out.println(i5 == i6);// false; 自动装箱时,如果值不在-128到127,就会创建一个新的对象
结论:

    1.基本数据类型与其包装类运算或比较时,会自动拆箱成基本数据类型;

    2.在自动装装箱时,会先检查其值是否在-128到127之间,如果在这之间,就会直接指向常量池中其值的地址;

    3.只要是new得到的一定是对象,存在堆内存中;

    4.同时byte, short, long也具有该特性。

原因:JVM做的一些一些优化,将常用的基本数据类型在程序运行时就创建加载在常量池中。

二、double, float类型的不同:

Float f1 = 100f;
Float f2 = 100f;
Float f3 = 300f;
Float f4 = 300f;
System.out.println(f1 == f2);// false
System.out.println(f3 == f4);// false
结论:float,double类型的包装类,都会在堆中创建一个新对象,因此比较的是对象的地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: