什麼是Java中的引用? 引用的概念,如果一個變數的類型是 類類型,而非基本類型,那麼該變數又叫做引用。 步驟 1 : 引用和指向 new Hero(); 代表 創建 了一個Hero對象 但是也僅僅是創建了一個對象,沒有辦法訪問它 為了訪問這個對象,會使用 引用 來 代表 這個對象 Hero h = ...
什麼是Java中的引用?
引用的概念,如果一個變數的類型是 類類型,而非基本類型,那麼該變數又叫做引用。
步驟 1 : 引用和指向
new Hero();
代表創建了一個Hero對象
但是也僅僅是創建了一個對象,沒有辦法訪問它
為了訪問這個對象,會使用引用來代表這個對象
Hero h = new Hero();
h這個變數是Hero類型,又叫做引用
=的意思指的h這個引用代表右側創建的對象
“代表” 在面向對象里,又叫做“指向”
public class Hero {
String name; //姓名
float hp; //血量
float armor; //護甲
int moveSpeed; //移動速度
public static void main(String[] args) {
//創建一個對象
new Hero();
//使用一個引用來指向這個對象
Hero h = new Hero();
}
}
步驟 2 : 多個引用,一個對象
引用有多個,但是對象只有一個。
在這個例子里,所有引用都指向了同一個對象。
對象就像 "房產", 引用就像"房產證"
房產證的複印件可以有多張,但是真正的"房產" 只有這麼一處
public class Hero {
String name; //姓名
float hp; //血量
float armor; //護甲
int moveSpeed; //移動速度
public static void main(String[] args) {
//使用一個引用來指向這個對象
Hero h1 = new Hero();
Hero h2 = h1; //h2指向h1所指向的對象
Hero h3 = h1;
Hero h4 = h1;
Hero h5 = h4;
//h1,h2,h3,h4,h5 五個引用,都指向同一個對象
}
}
步驟 3 : 一個引用,多個對象
第8行,引用garen指向新創建的對象(對象1)
第9行,同一個引用garen指向新創建的對象(對象2)
這個時候,對象1,就沒有任何引用指向了
換句話說,就沒有任何手段控制和訪問該對象,那麼該對象就變得沒有意義。
package charactor;
public class Hero {
public String name;
protected float hp;
public static void main(String[] args) {
Hero garen = new Hero();
garen = new Hero();
}
}
練習: 引用
(如代碼,問題:
h4所指向的對象和h2所指向的對象,是否是同一個對象?)
package charactor;
public class Hero {
public String name;
protected float hp;
public static void main(String[] args) {
Hero h1 = new Hero();
Hero h2 = new Hero();
Hero h3;
Hero h4;
h3 = h1;
h4 = h3;
}
}
答案:
如果所示,h4指向h3,最終間接地指向了對象1
而h2指向的是對象2,所以h4和h2不是指向同一個對象