java中“==”用来比较对象(字符串)时,结果到底如何?

java中“==”用来比较对象(字符串)时,结果到底如何?

img

为什么前两种结果为true,后一种结果为false。谁来教教我?

==:比较的是地址是否相同
equal():比较的是内容是否相同
《String a="abc"与String b=new String("abc")的区别》, 一起来围观吧 https://blog.csdn.net/yin_xing_ye/article/details/97046381?utm_source=app&app_version=5.0.1&code=app_1562916241&uLinkId=usr1mkqgl919blen

两个字符串是两个不同对象 对应的地址是不同的用==比较的是两个地址是否相同 而equals 是比较地址所指向的字符串是否相同

这里有个字符串池的概念,在一开始池里是没有东西的,a="张三"的时候在池里创建了一个对象,然后b在赋值为张三的时候,看到池里有个对象,所以地址指向的是同一个值,所以比较地址值会相等。然而c是你用new scanner输入设置的张三,所以一定会创建一个新对象,所以你用==比较地址不一样,所以会为false