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类型的包装类,都会在堆中创建一个新对象,因此比较的是对象的地址
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类型的包装类,都会在堆中创建一个新对象,因此比较的是对象的地址
相关文章推荐
- C++与Java基本数据类型比较
- 黑马程序员--java基本数据类型的比较和应用
- Java基本数据类型的比较
- JAVA比较(基本数据类型,对象类型)
- java的8种基本数据类型及转换、比较
- java中基本数据类型与引用类型比较方式
- C++与Java基本数据类型比较
- java与.net比较学习系列(3) 基本数据类型和类型转换
- java 对象类型与基本数据类型传参的比较
- C++与Java基本数据类型比较
- java封装类和基本数据类型的比较
- [java]java中的 == 号判断,为什么基本数据类型就是比较内容,而对象则是比较地址?
- C语言与JAVA语言中基本数据类型长度的比较
- java,c,c++ 语言之间基本数据类型的比较
- C++与Java基本数据类型比较
- Java为什么两个值相等的对象==比较返回false而两个值相等的不同类型的的基本数据类型返回true
- java 对象类型与基本数据类型传参的比较
- Java八种基本数据类型的比较及其相互转化
- java,c,c++ 语言之间基本数据类型的比较