问题来源:
用户输入"1",userModeChoice == "1"
显示为false,但,明明两个值都是“1”,为什么两个值==不等?
==,equals
在String类中,==对比的是引用,equal中对比的是string的值,所以在上面的栗子里,二者的引用是一致的!
String的地址
String在内存中的地址很tricky。
在如果String的值一致,二者的地址也是一致的,所以正常来说 ==,equals比较字符串是没有问题的。如果string的值发生改变,java会重新创建一个String地址,并把新地址付给改变的变量。如下实验。
引用
https://blog.csdn.net/barryhappy/article/details/6082823