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