关于控制台输入的字符串不能用==比较的问题
在最近的学习中遇到这样的问题。
先看代码:
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比较?
作为初学者,我并不是很明白为什么会产生这种情况,希望哪位大佬能解答一下,谢谢。

浙公网安备 33010602011771号