有没有这种情况(java):==比较的返回值为true, equals比较的返回值false。
答案:1 悬赏:80 手机版
解决时间 2021-04-18 07:11
- 提问者网友:欲望失宠
- 2021-04-18 02:16
有没有这种情况(java):==比较的返回值为true, equals比较的返回值false。
最佳答案
- 五星知识达人网友:愁杀梦里人
- 2021-04-18 03:28
java中,
(1)对于字符串变量来说,equal比较的两边对象的内容,所以内容相同返回的是true。
至于你没问到的“==”,比较的是内存中的首地址,所以如果不是同一个对象,“==”不会返回true 而是false。
举个简单的例子,
String s1="abc", s2="abc";
String s3 =new String("abc");
String s4=new String("abc");
s1==s2 //true,
s1.equals(s2) //true,
s3.equals(s3) //true,equal比较的是内容
s3==s4//false,==比较的是首地址,所以是false
(2)对于非字符串变量,equals比较的内存的首地址,这时候和==是一样的,即比较两边指向的是不是同一个对象,
即
Sample sa1 = new Sample();
Sample sa2 = new Sample();
sa1.equals(sa2) //false,因为不是同一对象
注意,如果加上
sa1=sa2;
那么
sa1.equals(sa2) //true
针对你问的,如果你说的两个对象是非字符串的,那么参考第2条;否则请参考第一条追问我的为题冒号后面就是个“==”,哈哈。
我是想问有没有一下这种可能?在做试卷的时候碰到的。
Test a = new Test();
Test b = a;
System.out.println(a == b); // true
System.out.println(a.equals(b)); // false
(1)对于字符串变量来说,equal比较的两边对象的内容,所以内容相同返回的是true。
至于你没问到的“==”,比较的是内存中的首地址,所以如果不是同一个对象,“==”不会返回true 而是false。
举个简单的例子,
String s1="abc", s2="abc";
String s3 =new String("abc");
String s4=new String("abc");
s1==s2 //true,
s1.equals(s2) //true,
s3.equals(s3) //true,equal比较的是内容
s3==s4//false,==比较的是首地址,所以是false
(2)对于非字符串变量,equals比较的内存的首地址,这时候和==是一样的,即比较两边指向的是不是同一个对象,
即
Sample sa1 = new Sample();
Sample sa2 = new Sample();
sa1.equals(sa2) //false,因为不是同一对象
注意,如果加上
sa1=sa2;
那么
sa1.equals(sa2) //true
针对你问的,如果你说的两个对象是非字符串的,那么参考第2条;否则请参考第一条追问我的为题冒号后面就是个“==”,哈哈。
我是想问有没有一下这种可能?在做试卷的时候碰到的。
Test a = new Test();
Test b = a;
System.out.println(a == b); // true
System.out.println(a.equals(b)); // false
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯