`
nicegege
  • 浏览: 577727 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Double类型大小比较--坑爹的java自动拆箱机制

阅读更多

java5以上版本支持了基本数据类型和基本数据类型对象的自动拆箱和装箱。在java7版本中,我要比较2个Double类型的大小值,发现2个值相等,使用==符号比较的时候,返回false。数据类型声明为double类型的时候,返回true。

public class DoubleTest {

	public static void main(String[] args) {
		double d1=0.8900000000000006;
		double d2=0.8900000000000006;
		System.out.println(d1==d2);
				
		Double d_1=0.8900000000000006;
		Double d_2=0.8900000000000006;
		System.out.println(d_1==d_2);
	}

}

 结果

true
false

扩展:

public class DoubleTest {

	public static void main(String[] args) {
		double d1=0.8900000000000006;
		double d2=0.8900000000000006;
		System.out.println(d1==d2); //返回结果true
				
		Double d_1=0.8900000000000006;
		Double d_2=0.8900000000000006;
		System.out.println(d_1==d_2);//返回结果false
		System.out.println(d_1==0.8900000000000006);//返回结果true
		
		
		Integer a1=1;
		Integer a2=1;
		System.out.println(a1==a2);//返回结果true
		
		Float f1=1f;
		Float f2=1f;
		System.out.println(f1==f2);//返回结果false
		
		Short s1=1;
		Short s2=1;
		System.out.println(s1==s2);//返回结果true
		
		Byte b1=2;
		Byte b2=2;
		System.out.println(b1==b2);//返回结果true
		
		char c1='a';
		char c2='a';
		System.out.println(c1==c2);//返回结果true
		
		Long l1=11111l;
		Long l2=11111l;
		System.out.println(l1==l2);//返回结果false
	}

}

 

 总结:没有自动拆箱和装箱,对象类型的Double的==比较,是对象引用的比较。Integer,Short,Byte,char的比较返回结果是ture,Long,Float,Double返回结果是false。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics