java方法中只有值傳遞,沒有引用傳遞


public class Example {
String testString = new String("good");
char[] testCharArray = {'a','b','c'};

public static void main(String[] args){
Example ex = new Example();
ex.change(ex.testString,ex.testCharArray);
System.out.println(ex.testString);
System.out.println(ex.testCharArray);
}

public void change(String testString,char[] testCharArray){
testString = "hhhhhh";
testCharArray[0] = 'w';
}
}
 
這段代碼最后輸出的是什么?
考慮之后給出你的答案。
good
wbc

 

首先要明白的java的方法傳遞的究竟是什么?

對於基本類型,傳遞的是基本類型的值,而對於引用類型傳遞的是地址

所以無論是什么,傳遞的都是值,因為你可以把地址理解成9x0000這種,也是一個值。

所以傳遞的都是值。

那么方法中什么時候會改變原來的值,什么時候不會呢?

1、只要是基本類型,傳遞的是值,這個值是復制了一份出來的,所以怎么都不會改變。

2、引用類型,傳遞的是地址,如果這個地址變了,那么原來的值肯定不變。

3、引用類型,傳遞的是地址,如果地址沒變,而改變了地址對應的對象的屬性,那么久會改變原來的值。

 

如果還聽不明白,那么簡單的說,只要在方法里面把傳進來的對象重新賦值一個new的對象,那么原來是不變得。

如同方法中的string,重新賦值了一個字符串,這個時候地址以及改變了,所以原來那個不變。

而char數組,沒有重新復制一個新的char數組,而是把char數組中的元素改變了,那就會改變原來的值。

 

對於內存的分析,下面這篇博客特別清楚,我就不多說了。

搞懂這個真的很重要。

http://www.cnblogs.com/lixiaolun/p/4311863.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM