我有這樣的代碼串進行比較,平等
class Test{
public static void main(String args[])
{
Boolean a;
Boolean b;
char [] c={'S','t','r','i','n','g'};
a=("String".replace('g','G')=="String".replace('g', 'G'));
b=("String".replace('g','g')=="String".replace('g', 'g'));
System.out.println("---"+a);
System.out.println("---"+b);
System.out.println(c.toString()=="String");
}
外出時的賣出期權 ---假 ---真 假
我沒有被Oracle訪問JLS文件的地方說。 替換方法: 返回一個新字符串,它是用newChar替換此字符串中出現的所有oldChar。 如果字符oldChar不出現在由此String對象表示的字符序列中,則返回對此String對象的引用。否則,將創建一個新的String對象,該對象表示與由此String對象表示的字符序列相同的字符序列,除了每次出現的oldChar被newChar的出現替換。
當O/P一個是錯誤的爲什麼O/P秒是真實的?
JLS文件說到toString方法: 該對象(它已經是一個字符串!)本身返回。 那麼爲什麼不O/P第三是真實的?
任何一個可以請解釋一下
在此先感謝 GPAR
使用等於insted的== – Uhla 2014-11-08 17:01:10
我猜這是因爲內部使用的字符串池,其中相同的字符串將不會創建兩次。在旁註:格式化您的代碼。 – keyser 2014-11-08 17:06:29
@烏拉不,這不是說這個問題。 'ToYonos'不,這不是重複的。 – Tom 2014-11-08 17:19:19