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;

posted @ 2020-04-26 13:40  下饭  阅读(139)  评论(0编辑  收藏  举报