Java應用程序開發學習之static關鍵字應用

編程語言 Java C語言 軟件 技術 程序員小新人學習 2018-12-18

Java的static關鍵字和C/C++語言的關鍵字有所不同:

一旦在Java裡使用了static關鍵字,那麼這樣的內容不再屬於對象自己,而是屬於類本身的,所以凡是本類的對象,都共享一份。

1、使用Java static關鍵字修飾成員變量

以下是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);

}

}

運行結果:

Java應用程序開發學習之static關鍵字應用

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

2、使用static修飾成員方法

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

private static int id_count = 0 ;

public static int Get_idcount()

{

return id_count ;

}

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

Student.Get_idcount()

強調兩點:

1、

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

(2)成員方法可以訪問靜態變量

(3)靜態方法可以訪問靜態變量

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

原因:因為在內存中是先有的靜態內容,後有的非靜態內容

2、

(1)靜態方法當中不能使用this

原因:因為this代表當前對象,通過誰調用的方法,誰就是當前對象

總結:

一旦使用了static修飾成員方法,那麼這就成為了靜態方法,不屬於對象,而是屬於類本身的。

對於靜態方法來說,可以通過對象名進行調用,也可以直接通過類名稱來調用。

如果沒有static關鍵字,那麼必須首先創建對象,然後通過對象才能使用它

如果有了static關鍵字,那麼不需要創建對象,直接就能通過類名稱進行調用。

無論是成員變量,還是成員方法,如果有了static,都推薦使用類名稱進行調用。

靜態變量:類名稱.靜態變量

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

對於本類中的靜態方法,可以省略類名稱。

3、靜態static的內存圖

參照學習傳智的Java課程給出的圖,清晰易懂。

Java應用程序開發學習之static關鍵字應用

4、靜態代碼塊

靜態代碼塊格式:

public class 類名稱{

static

{

//靜態代碼塊的內容

}

}

(1)特點:當第一次用到本類時,靜態代碼塊執行唯一的一次,靜態內容總是優先於非靜態,所以靜態代碼塊比構造方法先執行

(2)典型用途:用來一次性地對靜態成員變量進行賦值。

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

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("靜態代碼塊運行!");

}

public Student(int age , String name)

{

System.out.println("構造方法運行!");

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());

}

}

運行結果:

Java應用程序開發學習之static關鍵字應用

很明顯得出結論。

---------------------

作者:Engineer-Bruce_Yang

原文:https://blog.csdn.net/morixinguan/article/details/84982486

相關推薦

推薦中...