本帖最后由 xulinml 于 2017-3-14 09:21 编辑
对于String这样的引用数据类型来说
== 比较的是地址值,equals() 比较的是引用数据类型的 值
因此你这个应该用equals;
但是有时候我们比较程序中自己定义的一些字符串的时候,equals和== 号却有相同的结果,比如下面这个:
String name1 = "123";
String name2 = "123";
比较name1==name2和 name.equals(name2)都返回true,
这是因为,程序先将"123"的地址值赋给了name1,
第二次赋值的时候由于java对于String常量的优化,不会新建一个已有的"123",而是将已有的"123"的地址值赋给name2;
因此这时候name1 和 name2 无论是地址是还是值都是相等的
对于程序中Scanner从键盘中获取得到的字符串地址值和你自己设置的那个"lin"的地址值就不一样了;
这也是为什么你的程序用==会一直报错的原因了
|