浏览 1755 次
锁定老帖子 主题:java 自动拆箱及装箱
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-29
闲逛百度知道,发现有人问 float a=2; Float b=2f; System.out.println(a==b);//true System.out.println(b==a);//true
问为什么一个是对象一个是基本类型,用==比较还是true
之前也没细看过,于是写代码: public static void main(String[] args){ float a=2f; Float b=2f; Float c=2f; System.out.println(b==a); }
反编译.class,得到
public static void main(String args[]){ float a = 2.0F; Float b = Float.valueOf(2.0F); Float c = Float.valueOf(2.0F); System.out.println(b.floatValue() == a); }
其实是编译器自动进行了处理,所以在这里依旧是值比较,同理另外几个基本类型及包装类型。 菜鸟文章高手路过 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-06-29
Float a=2f;
Float b=2f; 为什么a==b为false String a="aaaa"; String b="aaaa"; 为什么a==b却为true 而且float a=2f; Float b=2f; a==b为true |
|
返回顶楼 | |
发表时间:2009-06-30
murener 写道 Float a=2f;
Float b=2f; 为什么a==b为false String a="aaaa"; String b="aaaa"; 为什么a==b却为true 而且float a=2f; Float b=2f; a==b为true String a="aaaa"; String b="aaaa"; String c=new String("aaaa");//这里c==b就是false了 为什么a==b却为true 这里"aaaa"是这字符常量,保存在字符常量池,a,b均指向这个字符常量所以他们的引用也就一样。 Float a=2f; Float b=2f; 这里两个都是对象,不存在拆箱,比较的是引用。 |
|
返回顶楼 | |