提问一个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呢?
展开
 我来答
不曾将你忘记
2012-10-11 · 超过14用户采纳过TA的回答
知道答主
回答量:84
采纳率:0%
帮助的人:43.4万
展开全部
Integer是int的封装类,当你比较类的的时候,你说是用==呢还是equals,
Integer 和 Long 是两个不同的类,你怎么比较也不会相等,除非把他们两个转成同一种类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
po...n@126.com
2012-10-11 · 贡献了超过100个回答
知道答主
回答量:100
采纳率:0%
帮助的人:30.3万
展开全部
a 和 b 是Integer对象,c是int类型数据
在和c 做 "==" 比较的时候a和b被自动拆包,是int类型数据比较,实际比较的是 1 == 1
在a和b比较的时候,都是对象,== 的作用是判断这两个对象的首地址,由于是二者是new创建两次不同的对象,所以就false了;
equals比较两对象的值 , Integer.equals(Long)精度不同;所以得到false;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qccycc
2012-10-11 · 超过11用户采纳过TA的回答
知道答主
回答量:83
采纳率:0%
帮助的人:30.8万
展开全部
==是匹配对象的由于c是int就变成匹配值了,但是两个integer匹配就是匹配对象是否相同。我有个疑问,你这代码能编译过去么,我放到eclipse里都提示错误“The method equals(Object) in the type Integer is not applicable for the arguments (int)”
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
weon3559
2012-10-11
知道答主
回答量:26
采纳率:0%
帮助的人:9.2万
展开全部
long类型与int类型比对对象不匹配,int与Integer是相同的长度而long类型则比int与Integer都大.
都不怎么记得顺序了~简单来说:long类型与int与Integer是不相同
String、char、double、long、int..........
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tiamo_man_man
2012-10-11 · 超过10用户采纳过TA的回答
知道答主
回答量:110
采纳率:0%
帮助的人:41.2万
展开全部
equals 比的是值... 而等于号比的是内存地址...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式