提问一个java的问题:是有关equals()和==的,问题如下

publicstaticvoidmain(String[]args){Integera=newInteger(1);Integerb=newInteger(1);intc... public static void main(String[] args) {
Integer a=new Integer(1);
Integer b=new Integer(1);
int c=1;
Long d=new Long(1);
System.out.println(a.equals(b));
System.out.println(a.equals(c));
System.out.println(b.equals(c));
System.out.println(a.equals(d));
System.out.println("-----------------------");
System.out.println(a==b);
System.out.println(a==c);
System.out.println(b==c);
}

运行结果是
true
true
true
false
-----------------------
false
true
true

这就怪了,a==c为true,b==c为true,a==b怎么就为false了呢?还有为什么a.equals(d)为false呢?
展开
 我来答
eleven蚊子94
2012-10-11
知道答主
回答量:15
采纳率:0%
帮助的人:2.3万
展开全部
equals()是判定字符串相等,用在两者都是String类型时;
==是判定数值相等。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
abcd880129
2012-10-11 · TA获得超过216个赞
知道小有建树答主
回答量:479
采纳率:0%
帮助的人:218万
展开全部
将此程序编译之后,反编译变为
Integer a = new Integer(1);
Integer b = new Integer(1);
int c = 1;
Long d = new Long(-5170845727634489343L);
System.out.println(a.equals(b));
System.out.println(a.equals(Integer.valueOf(c)));
System.out.println(b.equals(Integer.valueOf(c)));
System.out.println(a.equals(d));
System.out.println("-----------------------");
System.out.println(a == b);
System.out.println(a.intValue() == c);
System.out.println(b.intValue() == c);
equals时比的都是对象,需要自动打包,所以equals为true。而Long类型不属于Integer所以false,具体可看源码。
而第一个==是比较两个引用的对象,不是同一个,所以false,
下面的==都先自动转成int再比较值,值相等,所以true。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Sha笑_you
2012-10-11
知道答主
回答量:6
采纳率:0%
帮助的人:3.4万
展开全部
因为Integer是int的封装类,==比较的是两个引用是不是指向同一个内存地址,equals比较的是两个引用的字面值是不是相同 所以a==b为false 因为d的类型是长整型 与a的类型并不同 之间存在拆箱和装箱的问题 所以a.equals(d)为false
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bdh17ss5
2012-10-11 · TA获得超过390个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:86.1万
展开全部
==用来比较基本数据类型的时候比的是值是否相等
==用来比较对象的时候比的是对象的地址是否相同
equals比较对象的内容是否相等
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dngoryaner
2012-10-11 · TA获得超过2350个赞
知道小有建树答主
回答量:2404
采纳率:0%
帮助的人:1122万
展开全部
同意
713lib
的回答。
简单的说就是。有的值在堆中存放有的在栈存放。所以比较时取值的范围不同。结果不同
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式