學習筆記:僅static訪問特點
目錄
1、static修飾的方法訪問特點
2、static變量的特點
static是一個修飾符,static關鍵字是靜態的意思,可以修飾成員方法,成員變量
static關鍵字的用途:方便在沒有創建對象的情況下來進行調用(方法/變量)
1、static修飾的方法訪問特點
static方法一般稱作靜態方法,由於靜態方法不依賴於任何對象就可以進行訪問,因此對於靜態方法來說,是沒有this的,因爲它不依附於任何對象,既然都沒有對象,就談不上this了。
並且由於這個特性,在靜態方法中不能訪問類的非靜態成員變量和非靜態成員方法,因爲非靜態成員方法/變量都是必須依賴具體的對象才能夠被調用。
static修飾的方法訪問特點
- 非靜態的成員方法
能訪問靜態的成員變量、非靜態的成員變量、靜態的成員方法、非靜態的成員方法 - 靜態的成員方法
僅能訪問靜態的成員方法、靜態的成員變量
public class Student {
//非靜態成員變量
private String name = "";
//靜態成員變量
private static String university = "傳智大學";
//非靜態成員方法
public void show(){
}
//非靜態成員方法
public void show2(){
System.out.println(name);//非靜態成員變量
System.out.println(university);//靜態成員變量
show();//非靜態成員方法
show3();//靜態成員方法
}
//靜態成員方法
public static void show3(){
}
//靜態成員方法
public static void show4(){
// System.out.println(name);//非靜態成員變量 報錯
System.out.println(university);//靜態成員變量
// show();//非靜態成員方法 報錯
show3();//靜態成員方法
}
}
2、static變量的特點
static變量也稱作靜態變量,靜態變量和非靜態變量的區別是:靜態變量被所有的對象所共享,在內存中只有一個副本,它當且僅當在類初次加載時會被初始化。
而非靜態變量是對象所擁有的,在創建對象的時候被初始化,存在多個副本,各個對象擁有的副本互不影響。
static成員變量的初始化順序按照定義的順序進行初始化。static是不允許用來修飾局部變量,無論在靜態方法,還是在非靜態方法中static都不允許用來修飾局部變量
static變量的特點
- 被類的所有對象共享,這也是我們判斷是否使用靜態關鍵字的條件
- 可以通過類名調用,當然也可以通過對象名調用
推薦使用類名調用
public class Student {
public String name;//姓名
public int age; //年齡
public static String university;//學校
public static String address;//地址
public void show(){
System.out.println("name="+ name +"," + "age="+ age +"," + "university="+ university +"," +"address="+address);
}
}
public class ExtendsDemo {
public static void main(String[] args) {
Student.university = "傳智大學";
Student s = new Student();
s.name="小揚";
s.age = 18;
s.address ="成都";
s.show();
System.out.println("------------------");
Student s1 = new Student();
s1.name="小袁";
s1.age = 18;
s1.show();
}
}
在S1對象中,沒有給address賦值,在輸出結果中,S1調用show()地址值也是成都。也說明static修飾成員變量,如果在某個對象中賦值,這個賦值結果被該類的所有對象共享。
一般static修飾成員變量修飾的成員變量,賦值用類名.成員變量名賦值,如Student.university = "傳智大學";