欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java?深入學(xué)習(xí)static關(guān)鍵字和靜態(tài)屬性及方法

 更新時間:2022年09月20日 11:41:49   作者:小二上酒8???????  
這篇文章主要介紹了Java?深入學(xué)習(xí)static關(guān)鍵字和靜態(tài)屬性及方法,文章通過圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

static關(guān)鍵字

在定義一個類時,只是描述某事物的特征和行為,并沒有產(chǎn)生具體的數(shù)據(jù),只有通過new關(guān)鍵字創(chuàng)建該類的實例對象時,才會開辟棧內(nèi)存及內(nèi)存,在堆內(nèi)存中要保存對象的屬性時,每個對象會有自己的屬性。

如果希望某些屬性被所有對象共享,就必須將其聲明為static屬性,如果屬性使用了static關(guān)鍵字進行修飾,則該屬性可以直接使用類名稱進行調(diào)用,static關(guān)鍵字還可以修飾成員方法。

靜態(tài)屬性

如果在Java程序中使用static修飾屬性,則該屬性稱為靜態(tài)屬性(也稱全局屬性),靜態(tài)屬性可以使用類名直接訪問。

格式如下:

類名.屬性名

舉例:

class student1{
String name;
int age;
String school="A大學(xué)";
public student1(String name,int age){
this.name=name;
this.age=age;
}
public void info(){
System.out.println("姓名:"+this.name+"年齡:"+this.age+"學(xué)校:"+school);
}
}
public class Example{
public static void main(String[]args){
student1 stu1=new student1("張三",10);
student1 stu2=new student1("李四",20);
student1 stu3=new student1("王五",18);
stu1.info();
stu2.info();
stu3.info();
}
}

輸出:

姓名:張三年齡:10學(xué)校:A大學(xué)
姓名:李四年齡:20學(xué)校:A大學(xué)
姓名:王五年齡:18學(xué)校:A大學(xué)

上述實例,三名同學(xué)均來自A大學(xué)。

假設(shè)現(xiàn)在A大學(xué)需要改名為B大學(xué),那么意味著,學(xué)校中所有學(xué)生的學(xué)校信息都要被修改,這樣做顯然是很麻煩的。

為了解決這種問題,我們可以使用static關(guān)鍵字修飾school屬性,將其變?yōu)楣矊傩?,school只會分配一塊內(nèi)存空間,被student類的所有對象共享,只要某個對象進行了一次修改,全部學(xué)生對象的school屬性值都會發(fā)生改變。

修改如下:

static String school="A大學(xué)";
stu1.school="B大學(xué)";//只修改stu1對象的學(xué)校屬性

輸出:

//stu1/stu2/stu3對象的school屬性都發(fā)生了變化
姓名:張三年齡:10學(xué)校:B大學(xué)
姓名:李四年齡:20學(xué)校:B大學(xué)
姓名:王五年齡:18學(xué)校:B大學(xué)

由此,可以得出這樣一個結(jié)論, static聲明的屬性是所有對象共享的。

自始至終,school屬性的內(nèi)存空間大小并未有任何改變。

靜態(tài)方法

如果想要使用類中的成員方法,就需要先將這個類實例化,而在實際開發(fā)時,開發(fā)人員有時候希望在不創(chuàng)建對象的情況下, 通過類名就可以直接調(diào)用某個方法 ,要實現(xiàn)這樣的效果, 只需要在成員方法前加上static關(guān)鍵字,使用static關(guān)鍵字修飾的方法通常稱為靜態(tài)方法。

同靜態(tài)變量一樣,靜態(tài)方法也可以通過類名和對象訪問。

類名.方法/實例對象名.方法

靜態(tài)方法的使用

舉例:

class Example{
public static void main(String[]args){
student1 stu1=new student1("張三",18);
student1 stu2=new student1("jason",19);
student1 stu3=new student1("小明",20);
stu1.setAge(20);//最終將實例stu1的年齡屬性替換成20
stu2.setName("小紅");//最終將實例stu2的名字屬性替換成"小紅”
//將所有實例的學(xué)校屬性替換成B大學(xué),由于它是使用static聲明的,所以可以直接使用類名進行調(diào)用
student1.setSchool("B大學(xué)");
stu1.info();
stu2.info();
stu3.info();
}
}
class student1{
private String name;
private int age;
private static String school="A大學(xué)";
public student1(String name,int age){
this.name=name;
this.age=age;
}
public void info(){
System.out.println("姓名:"+this.name+",年齡:"+this.age+",學(xué)校:"+school);
}
//將student1類的所有屬性進行封裝,要想更改屬性就必須使用setter方法
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
public static String getSchool(){
return school;
}
public static void setSchool(String school){
student1.school=school;
}
}

輸出:

姓名:張三,年齡:20,學(xué)校:B大學(xué)
姓名:小紅,年齡:19,學(xué)校:B大學(xué)
姓名:小明,年齡:20,學(xué)校:B大學(xué)

靜態(tài)方法只能訪問靜態(tài)成員,因為非靜態(tài)成員需要創(chuàng)建對象才能訪問,即隨著對象的創(chuàng)建,非靜態(tài)成員才會分配內(nèi)存,而靜態(tài)方法在被調(diào)用時可以不創(chuàng)建任何對象。

靜態(tài)代碼塊

在Java類中, 用static關(guān)鍵字修飾的代碼塊稱為靜態(tài)代碼塊 ,當(dāng)被類加載時,靜態(tài)代碼塊會執(zhí)行,由于類只加載一次,因為靜態(tài)代碼塊只執(zhí)行一次,在程序中,通常使用靜態(tài)代碼塊對類的成員變量進行初始化。

舉例:

class Example{
public static void main(String[]args){
student1 stu1=new student1();
student1 stu2=new student1();
student1 stu3=new student1();
}
}
class student1{
String name;
//構(gòu)造代碼塊
{
System.out.println("我是構(gòu)造代碼塊");
}
//靜態(tài)代碼塊
static{
System.out.println("我是靜態(tài)代碼塊");
}
//構(gòu)造方法
public student1(){
System.out.println("我是student1類的構(gòu)造方法");
}
}

輸出:

我是靜態(tài)代碼塊
我是構(gòu)造代碼塊
我是student1類的構(gòu)造方法
我是構(gòu)造代碼塊
我是student1類的構(gòu)造方法
我是構(gòu)造代碼塊
我是student1類的構(gòu)造方法

從輸出結(jié)果,我們不難看出, 代碼塊的執(zhí)行順序為靜態(tài)代碼塊—>構(gòu)造代碼塊----->構(gòu)造方法。

static修飾的量會隨著class文件一同加載,屬于優(yōu)先級最高的

上述實例中,雖然我們創(chuàng)建了三個實例化對象,但是靜態(tài)代碼塊中的內(nèi)容只被執(zhí)行了依次且是第一次被執(zhí)行,這就說明靜態(tài)代碼塊在類第一次使用時才會被加載,并且只會加載一次。

到此這篇關(guān)于Java 深入學(xué)習(xí)static關(guān)鍵字和靜態(tài)屬性及方法的文章就介紹到這了,更多相關(guān)Java static關(guān)鍵字 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論