关于控制台输入的字符串不能用==比较的问题

在最近的学习中遇到这样的问题。

先看代码:

Scanner scanner = new Scanner(System.in);
String a= scanner.next();
String b= scanner.next();
System.out.println("a.hashCode()="+a.hashCode());
System.out.println("\"test\".hashcode="+"test".hashCode());
System.out.println(a=="test");
System.out.println(a==b);
System.out.println(a==a);
输出结果:

test
test
a.hashCode()=3556498
"test".hashcode=3556498
false
false
true

可以发现控制台输入的字符串除了与自己比较结果为true,其他的尽管地址一样结果也是false。

是不是说控制台输入的字符串不能用==比较,只能用equals比较?

作为初学者,我并不是很明白为什么会产生这种情况,希望哪位大佬能解答一下,谢谢。

posted @ 2022-03-10 19:57  不会游泳的鱼_27  阅读(60)  评论(0)    收藏  举报