程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> java-為什麼是這個結果?JAVA這是什麼機制

java-為什麼是這個結果?JAVA這是什麼機制

編輯:編程解疑
為什麼是這個結果?JAVA這是什麼機制
 public class test4 {

    public static void main(String[] args) {
        String a = fuse("a", "");
        String b = fuse("a", "");
        System.out.println(a == b);
        String c = "a"+"";
        String d = "a"+"";
        System.out.println(c == d);
        String e = fuse("a");
        String f = fuse("a");
        System.out.println(e == f);
    }
    static String fuse(String t1)
    {
        return t1;
    }
    static String fuse(String t1,String t2)
    {
        return t1+t2;
    }

}

運行結果:
false
true
true
為什麼是這個答案???

最佳回答:


1.編譯優化
2.字符串池
c和d變量在編譯時就已經將值計算完畢了;
也就是說c,d,e,f這幾個都是一樣的地址;
a,b兩個變量因為需要調用方法,所以沒辦法編譯時計算;
調用方法後,t1+t2是產生了一個新的字符串對象,並且沒在池中;所以a和b兩次產生的對象的引用地址是不相同的;

如果你用equals的話,那麼所有都相同;

希望能夠幫到你....

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved