String比较涉及知识点 实例
public class Test1{
public static void main(String[] args) throws Exception {
String str="abcd";
String str2="abcd";
System.out.println(str==str2);//true
String str3=new String("abcd");
System.out.println(str3==str);//false
String str4="ab"+"cd";
System.out.println(str4==str);//true
String str5="ab";
String str6="cd";
System.out.println((str5+str6)==str);//false
String str7=str;
System.out.println("-----------------");
System.out.println(str3.equals(str));//true
System.out.println(str4.equals(str));//true
System.out.println((str5+str6).equals(str));//true
System.out.println("-------------------");
String str7=str;
str7="ab";
System.out.println(str7==str);//false
System.out.println(str2==str);//true
}
}
==比较的地址,equals比较的内容。String两种构造方式,直接赋值用的是原来的地址,返回true;new String(),开辟了新的内存空间为false;
"ab"+"cd"是静态常量池,为true;str5+str6为动态常量池,运行时str5\str6是变量,为false;string类型的值无法改变 ,str7为false;