Java學習(一) 引用與傳值

2021-08-10 04:45:36 字數 1156 閱讀 4045

若理解有誤,望不吝賜教~~

1. new

當我們使用new 關鍵字生成物件的時候,實際上完成了三件事:

① 為物件開闢記憶體空間

② 呼叫類的構造方法

③ 將生成的物件的位址返回

由以上可知:

people people = new people();

new 生成了物件的本身,而 people 獲得的是物件的位址,即 引用生成的物件。

2. 引用型別

上述people即為引用型別,引用的是new生成的物件。

乙個物件可以被多個引用所指向,每個引用只能指向唯一的乙個物件。

people people = new people(); 

people people2 = people;

如果乙個物件被多個引用所指向,那麼無論哪個引用對物件的屬性進行了修改,都會反映到其他的引用當中。

public class paramtest3 

public static void main(string args)

}class person

由於兩個引用型別person /person2都是指向的同乙個物件,即對兩個引用進行的所有操作都是直接對物件本身的操作,故而無論哪個引用對物件的屬性進行了修改,都會反映到其他的引用當中。

3. 傳值

在方法引數的傳遞中,無論傳遞的是原生資料型別還是引用型別,統一是傳值:

①  傳入原生資料型別

int a = 1;  // a為原生資料,傳完以後你是你我是我,各不影響

c.changeint(a);

傳完以後,相互分離,互不干擾

②  傳入引用型別

test.change(person, person2);
傳入的皆是 「引用的位址」 這個值。

4. 總結

寫的很亂,不過關鍵只有一句話,就是new生成的物件本身是存在於某乙個地方的,我們對它的操作是通過指向它的位址間接完成的。

java傳值與傳引用問題總結

1.基本型別與引用型別區別 對於基本型別 int long short double char byte float boolean 變數直接儲存資料的值 對於引用型別,變數儲存的是物件的位址,由此位址指向實際物件。如圖 對於基本型別,直接傳值,方法裡進行重新賦值不會導致原值改變 public cl...

java引數傳值 傳引用

1 結論 2 傳值和傳引用區別 例項1 傳值 void method1 7 void method2 13 voidchange1 stringbuffer sb 17 voidchange2 stringbuffer sb 呼叫method1 螢幕列印結果為 helloworld 呼叫method...

傳值與傳引用

python的函式傳值和傳引用,和c c 語言是一樣的。在開始之前,我們有必要分清一下python的一些基礎概念。首先要說的是 變數 與 物件 在python中,型別屬於物件,變數是沒有型別的,這正是python的語言特性,也是吸引著很多pythoner的一點。所有的變數都可以理解是記憶體中乙個物件...