//引用型別:變數的型別。
//物件型別:通過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都是乙個...