1. 程式人生 > >java中的String作為引數引起的一些研究

java中的String作為引數引起的一些研究

昨天在做一個關於函式引數傳遞的題目:

下面有關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.的知識再來看一個例子。


有了之前的知識,應該很容易看懂,而不會感到奇怪。下面用一個圖來解釋。


參考: