【Java基础】Java中的值传递、引用传递
生活随笔
收集整理的這篇文章主要介紹了
【Java基础】Java中的值传递、引用传递
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java中的值傳遞、引用傳遞
對于一個方法而言,參數是為該方法提供信息的,而不是想讓該方法改變自己。——《Java編程思想》
值傳遞是對基本型變量而言的,傳遞的是該變量的一個副本,改變副本不影響原變量。
引用傳遞一般是對于對象型變量而言的,傳遞的是該對象地址的一個副本,并不是原對象本身。
不要糾結于 Pass By Value 和 Pass By Reference 的字面上的意義,否則很容易陷入所謂的 “一切傳引用其實本質上是傳值” 這種并不能解決問題無意義論戰中。
Java中只有傳值調用,沒有傳址調用。所以在Java方法中改變參數的值是行不通的。但是可以改變引用變量的屬性值。
仔細理解一下下面幾句話:
1、對于基本類型參數,在方法體內對參數進行重新賦值,并不會改變原有變量的值。
2、對于引用類型參數,在方法體內對參數進行重新賦予引用,并不會改變原有變量所持有的引用。
3、方法體內對參數進行運算,不影響原有變量的值。
4、方法體內對參數所指向對象的屬性進行操作,將改變原有變量所指向對象的屬性值。
來做一個測試:
public class Main {public static void main(String[] args) {Animal dog = new Animal(10, "Yellow");System.out.println(dog);change(dog);System.out.println(dog);}static void change(Animal a) {a.weight = 100;a.color = "Red";} }class Animal {int weight;String color;public Animal(int weight, String color) {this.weight = weight;this.color = color;}@Overridepublic String toString() {return "Animal [weight=" + weight + ", color=" + color + "]";} }輸出
Animal [weight=10, color=Yellow] Animal [weight=100, color=Red]一張圖解釋:對象在內存中的存儲方式
對象數組的內存解析
總結
以上是生活随笔為你收集整理的【Java基础】Java中的值传递、引用传递的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows10文件重命名/复制/移动
- 下一篇: 【Java文件操作】一个将文件转化为十六