java每日練習-1

1.所有類都來源於object超類。

2.對象狀態的改變必須通過調用方法實現,否則就破壞了封裝性。對象的狀態爲每個對象所保存的描述當前特徵的信(可以理解爲類的屬性)

3,類的每一個實例的標識都不相同,狀態同樣不同。即使兩個擁有相同的狀態的對象都不相同

4,一個對象變量並沒有實際包含一個對象,僅僅引用一個對象,在java中,任何對象變量的值都是對存儲在另一個地方的一個對象的引用,new操作符的返回地址也是一個引用

4.1 首先當使用new 操作符時,會對一個類初始化一個對象(生成一個內存地址),此時當一個對象變量等於new 初始化的對象時就會把這個對象的內存地址返回給對象變量,即引用。
4.2 當使用對象變量a給另一個對象變量b賦值時,就會把對象變量a引用對象賦值給b,此時a,b引用的是同一塊內存地址,所以此時採用`==`比較a,b時會返回true,但不代表a和b的對象一樣,即`==`比較的僅僅是內存地址,a和b所引用的對象時兩個不同的對象(標識符不同)。

5,java的對象存儲在堆中,且java的對象變量與c++的指針類似

Date birthday //java
等同於
Date* birthday //c++

6,類的構造器總是伴隨着new操作符一起使用

Employ number01("jobn",1000);//c++中允許
Employ number01("jobn",1000);//java中不允許,編譯不通過

7,java中所有方法必須在類的內部定義,但並非是內聯的方式,在c++中在類內部定義的方法會自動的稱爲內聯的方法。

8,類的方法可以訪問類的所有私有域(私有屬性)但是類的對象不能訪問類的私有域。

class Employee {
    private  string name;
    public boolean equals(Employee other){
        return name.equals(other.name);
    }
}
Employee harry;
Emplay boss;
//下面的語句是合法語句
if(harry.equals(boss){
   ...
}
//下面的語句是非法語句
boss.name;

原因在於harry.equals(boss)是類的方法,類的方法可以訪問本類中所有的私有域。

9,final 域,可以將某個屬性聲明爲final,則此屬性即爲final域,對於這樣的域必須在構造對象時初始化,並且這些域之後不可改變,即這些域沒有set方法。同樣可以將某個對象聲明爲final,final Employee emplyee此時表明emlpyee這個對象不可以再引用其他的Employee對象。

10,靜態方法可以訪問靜態自身類中的靜態域

11,方法參數:java程序設計語言總是採用按值調用,即方法得到的所有參數值的一個拷貝,此時方法不能修改傳遞給它的任何參數變量的內容。對象的引用作爲參數可以對參數進行改變。

//使用對象的引用可以改變參數的值
public void set(Employ e){
    x.raiseSalary(200);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章