string是引用数据类型 “使用==比较”时的情况
当我们使用“==”进行比较时;引用数据类型比较的是地址值。new出来地对象会开辟在堆中;所以他们地址不相等。
public class uesfanyue {public static void main(String[] args){
String s=new String("123");
String ss=new String("123");
boolean b=s==ss;
System.out.println(b);//false
}
}
使用equals比较
当我们使用equals比较时就可以比较字符串里面的内容
public class uesfanyue {public static void main(String[] args){
String s=new String("123");
String ss=new String("123");
boolean b=s==ss;
System.out.println(b);//false
b=s.equals(ss);
System.out.println(b);//true;
}
}
string直接赋值的情况
当使用string s=xxx;时,此时的值会保存在串池中;当另一个string ss调用时会直接去串池中找;
故此时它们的值是一样的。
String z="123";
String zz="123";
boolean c=z==zz;//true;
System.out.println(c);
注意拼接字符串时比较的情况
当拼接字符串时有变量时;会新建一个对象在串池中;
当没有变量时;直接在串池中寻找。
String s="1234";
String d="123";
String c=d+"4";
String v="123"+"4";
boolean a= s==c;//false;
boolean n= v==s;//true;
注:上述中串池为堆内存中的一部分,专门用来存放直接赋值的字符串;
最后月月建议大伙在使用string时直接赋值使用最好。