溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

static關(guān)鍵字怎么在Java應(yīng)用程序中使用

發(fā)布時間:2021-06-11 15:23:33 來源:億速云 閱讀:104 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關(guān)static關(guān)鍵字怎么在Java應(yīng)用程序中使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

1、使用Java static關(guān)鍵字修飾成員變量

以下是Stundent類。

package app_one;
public class Student {
 private int id = 0 ;
 private int age = 0; 
 private String name = null;
 static int id_count = 0 ;
 public Student(int age , String name)
 {
 this.age = age ; 
 this.name = name ;
 this.id = ++id_count ;
 }
 public int getage() {
 return age;
 }
 public void setage(int age) {
 this.age = age;
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
}

以下是主類:

package app_one;
public class hello {
 public static void main(String[] args) 
 {
 Student st1 = new Student(14,"小明");
 System.out.println("年齡:" + st1.getage() + " 姓名:" + st1.getName() + " 序號:" + Student.id_count);
 Student st2 = new Student(15,"小紅");
 System.out.println("年齡:" + st2.getage() + " 姓名:" + st2.getName() + " 序號:" + Student.id_count);
 Student st3 = new Student(18,"小李");
 System.out.println("年齡:" + st3.getage() + " 姓名:" + st3.getName() + " 序號:" + Student.id_count);
 }
}

運(yùn)行結(jié)果:

static關(guān)鍵字怎么在Java應(yīng)用程序中使用

從上面的案例可以看到,id_count是可以自動進(jìn)行計(jì)數(shù)的,每一次實(shí)例化Student類的時候,id_count就自動+1,然后賦值給成員變量id,由于定義了static關(guān)鍵字的變量不再屬于對象,而是屬于類,所以在訪問的時候,我們可以用類名稱().靜態(tài)變量的形式來進(jìn)行訪問。

2、使用static修飾成員方法

將上述程序中Student類的id_count修改為私有的靜態(tài)變量,并添加一個靜態(tài)的Get_idcount方法。

private static int id_count = 0 ;
public static int Get_idcount()
{
 return id_count ;
}

在主類中獲取id_count不通過類.變量的方式獲取,而是改為類.方法()的方式獲取。

Student.Get_idcount()

強(qiáng)調(diào)兩點(diǎn):

  • (1)成員方法可以訪問成員變量

  • (2)成員方法可以訪問靜態(tài)變量

  • (3)靜態(tài)方法可以訪問靜態(tài)變量

  • (4)靜態(tài)方法不可以訪問成員變量(非靜態(tài))

原因:因?yàn)樵趦?nèi)存中是先有的靜態(tài)內(nèi)容,后有的非靜態(tài)內(nèi)容

  • (1)靜態(tài)方法當(dāng)中不能使用this

原因:因?yàn)閠his代表當(dāng)前對象,通過誰調(diào)用的方法,誰就是當(dāng)前對象

小結(jié):

一旦使用了static修飾成員方法,那么這就成為了靜態(tài)方法,不屬于對象,而是屬于類本身的。

對于靜態(tài)方法來說,可以通過對象名進(jìn)行調(diào)用,也可以直接通過類名稱來調(diào)用。

如果沒有static關(guān)鍵字,那么必須首先創(chuàng)建對象,然后通過對象才能使用它

如果有了static關(guān)鍵字,那么不需要創(chuàng)建對象,直接就能通過類名稱進(jìn)行調(diào)用。

無論是成員變量,還是成員方法,如果有了static,都推薦使用類名稱進(jìn)行調(diào)用。

靜態(tài)變量:類名稱.靜態(tài)變量

靜態(tài)方法:類名稱.靜態(tài)方法();

對于本類中的靜態(tài)方法,可以省略類名稱。

3、靜態(tài)static的內(nèi)存圖

參照學(xué)習(xí)傳智的Java課程給出的圖,清晰易懂。

static關(guān)鍵字怎么在Java應(yīng)用程序中使用

4、靜態(tài)代碼塊

靜態(tài)代碼塊格式:

public class 類名稱{
  static
  {
    //靜態(tài)代碼塊的內(nèi)容
  }
}
  • (1)特點(diǎn):當(dāng)?shù)谝淮斡玫奖绢悤r,靜態(tài)代碼塊執(zhí)行唯一的一次,靜態(tài)內(nèi)容總是優(yōu)先于非靜態(tài),所以靜態(tài)代碼塊比構(gòu)造方法先執(zhí)行

  • (2)典型用途:用來一次性地對靜態(tài)成員變量進(jìn)行賦值。

針對上面的案例做修改,在Student類中添加一個靜態(tài)代碼塊:

package app_one;
public class Student {
 private int id = 0 ;
 private int age = 0; 
 private String name = null;
 private static int id_count = 0 ;
 static 
 {
 System.out.println("靜態(tài)代碼塊運(yùn)行!");
 }
 public Student(int age , String name)
 {
 System.out.println("構(gòu)造方法運(yùn)行!");
 this.age = age ; 
 this.name = name ;
 this.id = ++id_count ;
 }
 public int getage() {
 return age;
 }
 public void setage(int age) {
 this.age = age;
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public static int Get_idcount()
 {
 return id_count ;
 }
}

然后主程序修改如下:

package app_one;
public class hello {
 public static void main(String[] args) 
 {
 Student st1 = new Student(14,"小紅");
 System.out.println("姓名: "+st1.getName() + " 年齡: " + st1.getage() + " 序號: "+Student.Get_idcount());
 Student st2 = new Student(14,"小李");
 System.out.println("姓名: "+st2.getName() + " 年齡: " + st2.getage() + " 序號: "+Student.Get_idcount());
 }
}

運(yùn)行結(jié)果:

static關(guān)鍵字怎么在Java應(yīng)用程序中使用

看完上述內(nèi)容,你們對static關(guān)鍵字怎么在Java應(yīng)用程序中使用有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI