運用構造方法可以對屬性(成員變數初始化);
書寫:構造方法需要與其所在類有完全相同的名字,
無返回值
無返回值型別
如:
class example
}
在初始化物件時,構造方法系統自動呼叫,構造方法無法手動呼叫
構造方法可以同名,區分看引數個數,型別,順序,
初始化時後面的括號有無引數可判斷出,系統自動呼叫了哪個構造方法
類中最好定義無參構造方法,再根據需求新增是否需要定義有參構造方法
注意事項:
1,如沒寫任何構造方法,系統會提供乙個無參構造方法
2,而寫了有參的構造方法後,系統不會再提供任何構造方法,所以需把無參構造方法加上
1,成員變數直接賦值:
int num = 1;
2,無參構造方法對成員變數初始化賦值:
public example()
3,有參構造方法對成員變數初始化賦值:
public example(int num)
4,物件賦值
example.num = 3;
5,private私有化後由set 方法修改賦值
public void setnum(int num)
定義乙個員工類employee
* 自己分析出幾個成員,然後給出成員變數
* 姓名name,工號id,工資salary
* 構造方法,
* 空參和有參的
* get***()set***()方法,
* 以及乙個顯示所有成員資訊的方法。並測試
public class employee
//有參構造方法,初始化成員變數
public employee(string name,int id, int salary)
//set get
public void setname(string name)
public void setid(int id)
public void setsalary(int salary)
public string getname()
public int getid()
public int getsalary()
//成員方法
public void fun()
}
測試**
public class employeetest
}
4:乙個類的成員變數初始化過程
student s = new student();
物件初始化,在堆記憶體中建立一片儲存空間,
靜態變數因為是在物件還沒有建立時就已經隨著類載入到方法區的靜態區,
所以呼叫它最好不使用物件(雖然可以),使用類名呼叫
靜態變數特點:
靜態變數隨著類的載入而載入到方法區的靜態區,
先於物件的建立
使用含有此靜態變數建立的類來初始化的物件,可以在靜態區共享此靜態變數,節省記憶體空間
可以用類名呼叫
應用場景:如飲水機相對於辦公室裡的人,是靜態變數可以共享
靜態變數與成員變數區別(判斷區別可從生命週期,位置,記憶體,初始值,呼叫方式等方面考慮)
1,所屬不同
成員變數屬於物件,位於類中方法外
靜態變數屬於類,前面加static,位於類中方法外
區域性變數位於方法中或方法宣告中,屬於此方法
2,記憶體中儲存位置不同
成員變數儲存在堆記憶體
靜態變數儲存在靜態區
區域性變數儲存在棧記憶體
3,生命週期不同
成員變數隨著物件的建立到**
靜態變數隨著類的載入到釋放
區域性變數隨著方法的入棧到出棧
4,呼叫方法
成員變數只能使用物件呼叫
靜態變數可使用類呼叫,物件呼叫可以但不推薦
區域性變數就近原則,不呼叫
5,初始值
成員變數隨著物件的初始化,如果無初始值,會有預設初始值
區域性變數必須給定初始值才能使用
靜態變數同成員變數一樣
記憶體表現步驟
1,類載入到方法區
2,同時靜態變數載入到方法區的靜態去
3,main函式入棧
4,堆記憶體中建立物件
5,把位址賦值到main函式中的物件來儲存
6,main函式出棧
7,gg
靜態方法
同樣用類名呼叫,
成員方法中可以有成員變數和靜態變數
靜態方法中只能有靜態變數
public jvm虛擬機器呼叫main,需要訪問許可權
static jvm虛擬機器呼叫main時,不需要建立物件
main jvm虛擬機器呼叫時,只知道main這個詞,調不到其他詞,注意:main不是關鍵字
string args 原來是接收從鍵盤輸入的值
現在用scanner scanner = new scanner(system.in);
string string = scanner.nextline();
java構造方法練習
7 下列方法定義中,正確的是 a a int x int a,b b double x int a,int b c double x a,b d nt x int a,int b 8 下列方法定義中,正確的是 d a void x int a,int b void不用返回 b x int a,int...
java建構函式練習
建構函式 物件一建立就會呼叫與之對應的建構函式 建構函式的作用,可以用於給物件進行初始化 建構函式小細節 必須初始化物件才能建立出來 當乙個類中沒有定義建構函式時,那麼系統會預設給該類加入乙個空引數的建構函式。當在類中自定義了建構函式後,預設的建構函式就沒有了。public class test c...
java的練習 繼承中的構造方法
class person person string name,int age public void info 可以寫成有返回值型別,我寫成了無返回值型別了 class teacher extends person teacher string name,int age,string positi...