1、 判斷定義為String類型的s1和s2是否相等
String s1 = "abc";
String s2 = "abc";
System.out.println(s1==s2);? ? ? ? ? // 引用數據類型,比較地址值? ,true
System.out.println(s1.equals(s2));? // true ? ? 比較equals:當且僅當該參數不為 null,并且是與此對象表示相同字符序列的 String 對象時,結果才為 true。
2、 下面這句話在內存中創建了幾個對象?
String s1 = new String("abc");? //這句話在內存中創建了兩個對象,一個是常量池,一個是堆內存中(副本)
System.out.println(s1);
3、 判斷定義為String類型的s1和s2是否相等
String s1 = new String("abc");? //在堆內存
String s2 = "abc";? ? ? ? ? ? ? //在常量池
System.out.println(s1==s2);? ? ? //結果==false
System.out.println(s1.equals(s2));? //結果==true(兩個屬性相同)
4、 判斷定義String類型的s1和s2是否相等
//byte b = 3 + 4;? ? ? ? //有常量優化機制,在編譯時,結果等于7在byte取值范圍內,會自動幫我們轉換
String s1 = "a"+"b"+"c";
String s2 = "abc";
System.out.println(s1==s2);? ? ? ? //結果==true,Java中有常量優化機制
System.out.println(s1.equals(s2));? //結果=true
5、判斷定義String類型的s2和s3是否相等
String s1 = "ab";
String s2 = "abc";
String s3 = s1 + "c";
System.out.println(s2==s3);? ? //結果==false
System.out.println(s2.equals(s3));? //結果==true