例子一:對象不同,內容相同,”==”返回false,equals返回true
String s1 = new String(“java”); String s2 = new String(“java”);
System.out.PRintln(s1==s2); //false System.out.println(s1.equals(s2)); //true 例子二:同一對象,”==”和equals結果相同
String s1 = new String(“java”); String s2 = s1;
System.out.println(s1==s2); //true System.out.println(s1.equals(s2)); //true String作為一個基本類型來使用
如果值不相同,對象就不相同,所以”==” 和equals結果一樣
String s1 = “java”; String s2 = “java”;
System.out.println(s1==s2); //true System.out.println(s1.equals(s2)); //true
例如String a = “abc”; String b = “abc”; a == b返回true,a.equals(b)同樣返回true,這是為什么呢? 原來程序在運行時有一個字符串池,創建字符串時會先查找池中是否有相應的字符串,如果已經存在的話只需把引用指向它即可,如果沒有則新建一個。 上例中創建a時,會在字符串池中首先創建一個”abc”,然后a指向它;創建b時,由于”abc”已經存在,b直接指向它即可。 若改為:String a = “abc”; String b = new String(“abc”); 則a == b返回false,a.equals(b)返回true。因為創建b時不管”abc”是否存在都會new一個新的”abc”,從而a和b指向的字符創對象是不同的,因此返回false。
新聞熱點
疑難解答