JAVA字符串输出结果不一致

public class Opinion {
public static void main(String[] args) {
String tom=new String("I am student");
String mary=new String("I am student");
String kim="I love you";
String sim="I love you";
boolean b=(tom==mary);
boolean b1=(kim==sim);
System.out.println(b);
System.out.println(b1);
}
}
这个输出的结果是:false
true
这是为什么啊?String tom="I am student";和String tom=new String("I am student");这两种字符串表达方式不是一样的么,可为什么输出的结果不同?

==表示了两个对象是否相等,如果要比较字符串内容是否相等,需要用equals().
String tom="I am student";和String tom=new String("I am student"); 他是两个不同的对象,所有不相等,凡是用到new String()创建出来的都是新对象,用等号比较都是false,如果直接是,String str = “ggg” ,String str2 = “ggg”,这种叫字符串常量,在创建常量时,它会先去字符串池找是否含有这个字符内容的对象,如果有,直接从字符池中取这个对象赋值给需要创建的,所有是同一对象,所以:
String kim="I love you";
String sim="I love you";
boolean b1=(kim==sim); // 这个b1是true
千万记得,判字符串内容要用,equals,boolean b=(tom.equals(mary)); //返回的肯定是true
温馨提示:答案为网友推荐,仅供参考
相似回答