Java基礎 第二節 第八課
static 關鍵字
概述
定義和使用格式
類變量
靜態方法
注意事項
調用格式
靜態原理圖解
靜態代碼塊
概述
關于 static 關鍵字的使用, 它可以用來修飾的成員變量和成員方法. 被修飾的成員是屬于類的, 而不是單單屬于某個對象的. 也就是說, 既然屬于類, 就可以不靠創建對象來調用了.
定義和使用格式
類變量
當 static 修飾成員變量時, 該變量稱為類變量. 該類的每個對象都共享一個類變量的值. 任何對象都可以更改該變量的值. 但也可以在不創建該類的對象的情況下對類變量進行操作.
類變量: 使用 static 關鍵字修飾的成員變量.
定義格式:
static 數據類型 變量名;
1
舉例:
static int numberID;
1
比如說, 基礎班新班開班, 學員報到. 現在想為每一位新來報到的同學編學號 ( sid ), 從第一名同學開始, sid 為 1, 以此類推. 學號必須是唯一的, 連續的, 并且與班級的人數相符, 這樣便知道要分配給下一名新同學的學號是多少. 這樣我們就需要一個變量, 與單獨的每一個學生對象無關, 而是與整個班級同學數量有關.
所以, 我們可以這樣定義一個靜態變量 numberOfStudent, 代碼如下:
public class StudentPlus { private String name; private int age; // 學生的id private int sid; // 類變量, 記住學生數量, 分配學號 public static int numberOfStudent = 0; public StudentPlus(String name, int age){ this.name = name; this.age = age; // 通過 numberOfStudent 給學生分配學號 this.sid = ++numberOfStudent; } // 打印屬性值 public void show(){ System.out.println("Student: name=" + name + ", age=" + age + ", sid=" + sid); } } class Demo{ public static void main(String[] args) { StudentPlus s1 = new StudentPlus("張三", 23); StudentPlus s2 = new StudentPlus("李四", 24); StudentPlus s3 = new StudentPlus("王五", 25); StudentPlus s4 = new StudentPlus("趙六", 26); s1.show(); // Student : name=張三, age=23, sid=1 s2.show(); // Student : name=李四, age=24, sid=2 s3.show(); // Student : name=王五, age=25, sid=3 s4.show(); // Student : name=趙六, age=26, sid=4 } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
靜態方法
當 static 修飾成員方法時, 該方法稱為類方法. 靜態方法在聲明中有 static, 建議使用類名來調用, 而不需要創建類的對象. 調用方式非常簡單.
類方法: 使用 static 關鍵字修飾的成員方法, 習慣稱為靜態方法.
定義格式:
修飾符 static 返回值類型 方法名 (參數列表){ // 執行語句 }
1
2
3
舉例: 在 Student 類中定義靜態方法
public static void showNum() { System.out.println("num:" + numberOfStudent); }
1
2
3
注意事項
靜態方法可以直接訪問類變量和靜態方法
靜態方法不能直接訪問普通成員變量或者方法. 反之, 成員方法可以直接訪問類變量或靜態方法
靜態方法中, 不能使用 this 關鍵字
注: 靜態方法只能訪問靜態成員
調用格式
被 static 修飾的成員可以并建議通過類名直接訪問. 雖然也可以通過對象名訪問靜態成員, 原因即多個對象均屬于一個類, 共享使用同一個靜態成員. 但是不建議, 會出現警告信息.
格式:
// 訪問類變量 類名.類變量名; // 調用靜態方法 類名.靜態方法名(參數);
1
2
3
4
5
調用演示, 代碼如下:
public class Test71 { public static void main(String[] args) { // 訪問類變量 System.out.println(StudentPlus.numberOfStudent); // 調用靜態方法 StudentPlus.showNum(); } }
1
2
3
4
5
6
7
8
靜態原理圖解
static 修飾的內容:
是隨著類的加載而加載的, 且只加載一次
存儲于一塊固定的內存區域 (靜態區), 所以, 可以直接被類名調用
它優先于對象存在, 所以, 可以被所有對象共享
靜態代碼塊
靜態代碼塊: 定義在成員位置, 使用 static 修飾的代碼塊 {}.
位置: 類中方法外
執行: 隨著類的加載而執行且執行異常, 優先于 main 方法的執行
格式:
public class ClassName{ static { // 執行語句 } }
1
2
3
4
5
作用: 給類變量進行初始化賦值. 代碼如下:
import java.util.ArrayList; public class Game { private static int number; private static ArrayList
1
2
3
4
5
6
7
8
9
10
11
12
13
14
注: static 關鍵字, 可以修飾變量, 方法和代碼塊. 在使用過程中, 其主要目的還是想在不創建對象的情況下, 去調用方法.
Java
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。