java中的String作為引數引起的一些研究
阿新 • • 發佈:2019-02-13
昨天在做一個關於函式引數傳遞的題目:
下面有關java按值傳遞和引用傳遞,說法錯誤的是?
A.char型別的傳遞屬於按值傳遞
B.Array型別的傳遞屬於按引用傳遞
C.使用者自定義型別的傳遞屬於按引用傳遞
D.String型別的傳遞屬於按引用傳遞
我沒有看懂Array型別是什麼?java中沒有Array類,果斷選了B結果錯了,最後看答案為D,Array型別指的是java中陣列型別,在java中Array型別必須是引用傳遞。感覺有問題String是類應該是按引用傳遞。???所以開始了String和函式呼叫的一下研究。
1.先來看看String的內部結構。
String的內部使用char[]陣列實現的所以值得肯定的是String是一個類。
2.String是一個特殊的類。
String類是個特殊的類,對它的一些操作符是過載的,如:
String str = “Hello”; 等價於String str = new String(“Hello”);
String str = “Hello”;
str = str + “ world!”;等價於str = new String((new StringBuffer(str)).append(“ world!”));
有了2.的知識再來看一個例子。
有了之前的知識,應該很容易看懂,而不會感到奇怪。下面用一個圖來解釋。
參考: