Java 關於引用

2021-09-13 12:38:03 字數 1893 閱讀 3039

//引用型別:變數的型別。

//物件型別:通過new建立物件時的型別,new後面的類名。

//物件:物件是通過類這個模板生成的乙個具體例項。

// 物件存放在堆區,物件是通過new關鍵字建立的。

//引用:代表所指向物件的 變數。引用的本質是所指向

// 的物件的首位址。引用是存放在棧或堆。

animal d = new cat(「男」,2);

system.out.println(d);

//引用是d,引用型別是animal

//new cat是物件,物件類是cat

d.bark();

cat e = (cat)new animal(「女」,3);

// e.bark();

animal a10 = new cat(「男」,2);

//系統會在編譯期檢查型別時候能呼叫某法或某屬性。

//執行期,執行期執行方法的時候,

//只關注你物件類而不關注你引用型別

cat c10 = (cat)a10;

c10.bark();

c10.sleep();

//向上轉型:子類往父類轉。系統自動完成。

// 父型別 變數可以儲存子型別物件。

//向下轉型:父類往子類轉。需要強轉轉換。

// 有可能失敗,有可能成功。

// 如果轉後的引用型別與物件的實際型別一致,可以成功。

// 如果轉後的引用型別與物件的實際型別不一致,會失敗。

//向上轉型:父類引用儲存子類物件。

person p1 = new teacher(「崔亞允」,18);

person p2 = new student(「金賽賽」,25);

system.out.println(p1);

system.out.println(p2);

//向上轉型的問題:

//範圍縮小,子類特有的方法或者屬性,父類沒有。

//只考慮共性,不考慮特性。

//向上轉型是必定成功的。

//向下轉型

//範圍擴大,物件範圍小,引用範圍大。

//引用型別是子型別,物件型別是父型別。

// person p3 = new person(「崔晨燚」,22);

// student stu = (student)p3;

// stu.study();

// person p4 = new student(「婁亞峰」,21);

// student stu2 = (student)p4;

// stu2.study();

// person p5 = new teacher(「李賽」,40);

// student stu3 = (student)p5;

// stu3.study();

student stu10 = new student(「張三」,22);

//instanceof是乙個運算子。

//判斷某個物件是否屬於某一類

//判斷某個物件是不是某個類的例項。

//一般 instanceof 出現在if語句中。

//先判斷引用是不是某種型別,如果是,我再強轉。

boolean a = stu10 instanceof student;

boolean b = stu10 instanceof person;

boolean c = stu10 instanceof object;

boolean d = (object)stu10 instanceof teacher;

system.out.println(a);

system.out.println(b);

system.out.println (c );

system.out.println(d);

java 軟引用 弱引用 虛引用

軟引用 用softreference類來標記,被軟引用標記的物件,只有在記憶體不足的時候,gc才會 該物件。弱引用 用weakreference類來標記,被弱引用標記的物件,在gc時,無論記憶體是否充足,都會被 掉。虛引用 用phantomreference來標記,虛引用需要有乙個與之關聯的引用佇列...

JAVA物件引用

等於運算子可以使用任意類到的運算元。基本資料型別的值可以比較。如果運算元同是 其它的物件型別 比如使用者建立的類 那麼計算結果取決於運算元是否引用相同的物件。考 慮 下下面的例子 string1 string2 在這個例子中,string1和string2必須引用同乙個字串而不是兩個不同的字串,即使...

何為Java引用

string str aa str有本身的記憶體,是乙個變數,而對像 aa 也有它自己的記憶體空間.這時候說str引用 aa 這個對像.string tt null 這裡的tt也是乙個引用變數,但是它沒有引用具體的對像.string str aa string tt str 這裡str與tt都是乙個...