2017-05-18 60 views
-1

的情況下,在java中傳遞,如果對象是通過引用傳遞比下面的代碼,是否引用作品的字符串

String str1 = new String("abc"); 
String str2 = str1; 
str1 = str1+"def"; 
System.out.println("str2 : "+str2); 

我甚至將其分配給字符串str2後修改字符串str1後得到輸出str2 : "abc" 代替「abcdef」 所以通過引用不會在字符串的情況下工作?

+0

Java不通過引用傳遞http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value – Guy

+1

'是否通過引用工作':否。 Java中沒有引用傳遞。 '如果是字符串':無關緊要。 – EJP

+0

從技術上講,問題中的代碼根本不「通過」(通過引用或其他方式),因爲不涉及函數調用。 –

回答

1

Java中的String實例是不可變的。當你認爲你正在修改字符串時,實際上你正在做的是創建一個新字符串。

+0

如果是包裝(例如Integer),我會得到相同的結果。這是什麼原因? – Zues

+0

@Zues包裝也是不可變的。 – Andres

+0

thanx bro !!。它幫助我很多 – Zues

相關問題