堆疊資料集合理解

2021-08-19 00:17:12 字數 613 閱讀 7445

int a=3;int b=3;編譯器先處理int a = 3;首先它會在棧中建立乙個變數為a的引用,然後查詢棧中是否有3這個值,如果沒找到,就將3存放進來,然後將a指向3,接著處理int b = 3;在建立完b的引用變數後,因為在棧中已經有3這個值,便將b直接指向3這樣,就出現了a與b同時均指向3的情況。

這時,如果再令a=4;那麼編譯器會重新搜尋棧中是否有4值,如果沒有,則將4存放進來,並令a指向4;如果已經有了,則直接將a指向這個位址。因此a值的改變不會影響到b的值。

要注意這種資料的共享與兩個物件的引用同時指向乙個物件的這種共享是不同的,因為這種情況a的修改並不會影響到b,它是由編譯器完成的,它有利於節省空間。而乙個物件引用變數修改了這個物件的內部狀態,會影響到另乙個物件引用變數。

首先,你要明白什麼是變數。變數的實質是一小塊記憶體單元。這一小塊記憶體裡儲存著變數的值

比如int a = 1;

a就是變數的名名,1就是變數的值。

而當變數指向乙個物件時,這個變數就被稱為引用變數

比如a a =new a();

a就是引用變數,它指向了乙個a物件,也可以說它引用了乙個a物件。我們通過操縱這個a來操作a物件。 此時,變數a的值為它所引用物件的位址

Java集合理解

如果涉及到堆疊 佇列等操作,應該考慮用list 對於需要快速插入,刪除元素,應該使用linkedlist 如果需要快速隨機訪問元素,應該使用arraylist。如果程式在單執行緒環境中,或者訪問僅僅在乙個執行緒中進行,考慮非同步的類,其效率較高,如果多個執行緒可能同時操作乙個類,應該使用同步的類。要...

2D matrix集合理解

transform 相對比較難理解的是 2d 的集合 matrix 這裡只是對 matrix 裡面的元素進行分解 matrix 1 0 0 1 0 0 1 2 3 4 5 6 1.正常值為1,定義的是 scalex 通過設定 x 軸的值來定義縮放。值 0 2.正常值為0,定義的是 skew 定義 2...

java 集合相關 配合理解泛型

不使用泛型 set set newhashset set.add taidi set.add xuenarui iterator it set.iterator while it.hasnext 在集合中查詢泰迪的資訊 boolean flag false iterator it set.itera...