首先:java中比较(str1 == str2),本质上比较的是两者的地址;
String str1 = "super";
String str2 = "super";
System.out.println((str1 == str2));
虽然上面str1和str2是两个变量,但是其实是指向同一个存储空间(常量池),直接用关系运算符 == 比较,实际比较的是两个变量引用的内存地址,所以上述输出为真;
利用Scanner获取到键入的字符串与其他字符串作比较时,如果直接用关系运算符 == 比较,得到的结果总是false,因为实际比较的是两个变量引用的内存地址;
通过键入产生的字符串 相当于 String str1 = new String("你好"); new出来的一个新对象,不论之前是否有内容相同的对象,都会再new一个新的对象;
如果比较键入字符串可以利用
name1.equals(name2)
Scanner sc = new Scanner(System.in);
String name1 = sc.next();
String name2 = sc.next();
//键入不可以比较
System.out.println((name1 == name2));