2 s670758656 s670758656 于 2015.07.19 12:26 提问

==与equals()的区别

String z=new String("hello");
String k=new String("hello");
System.out.println(z==k);
System.out.println(z.equals(k));
的结果是false true

    而String z="hello";
    String k="hello";
    System.out.println(z==k);
    System.out.println(z.equals(k));
    的结果是true  true呢?

    求讲解!!

12个回答

Evankaka
Evankaka   Ds   Rxr 2015.07.19 12:28
已采纳

==比较的是存放内存地址是否相同
equals比较的存放的内容是否相同

sinat_26944313
sinat_26944313   2015.07.19 12:21

==是比较基本数据类型,eq是比较应用数据类型

CSDNXIAOS
CSDNXIAOS   2015.07.19 12:29

  本人认为 “==”比较的是2个对象地址: 针对网上有认为“==”在判断2个对象为相互兼容的八种基本数据类型时,比较的是其值的说法,我从内存的角度去理解它:8种基本数据类型数据是存储在栈空间的,而栈空间有“数据共享”的特性。所以此时“==”还是在判断被比较对象的地址 equals()方法在未......
答案就在这里:==与equals()的区别
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

Evankaka
Evankaka   Ds   Rxr 2015.07.19 12:31

String z=new String("hello");
String k=new String("hello");
表示的是从堆中分别开两个地址给z和k分别存放hello.
所以==时为false,equal为true.
String z="hello";
String k="hello";

创建第一个String z="hello";会把hello存放在字符串常量区,等到
String k="hello";时直接把k指向z已经创建好的字符串常量区。
所以==时为true,equal为true

lhs472194266
lhs472194266   2015.07.19 12:27

new会得到一块内存。而第二种则是在常量池里,而且对于相同常量只有一个,所以k是指向了"hello"。==是判断内存地址是否相同,基本类型的equals基本都被重写,不再是==.

guwei4037
guwei4037   Ds   Rxr 2015.07.19 12:44

记住下面的话就行了:

== 比较的是地址

equals比较的是内容

strutce
strutce   Ds   Rxr 2015.07.19 12:48

==毕竟数据,不能比较字符串
equals能比较字符串

Alvin930403
Alvin930403   2015.07.19 12:49

赞同第一个。。。。。

qq_27493707
qq_27493707   2015.07.19 14:15

"=="比较数字,equals比较内容

jthivan
jthivan   2015.07.19 14:40

==比较的是存放内存地址是否相同
equals比较的存放的内容是否相同

共12条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片