static關鍵字的作用:
用來修飾成員變量和方法,被修飾的成員是屬于類的,而不單單是屬于某個對象的,也就是說,可以不靠對象來調用。
首先我們來介紹類變量
當static修飾成員變量時,該變量稱為類變量,該類的每個對象都共享同一個類變量的值,任何
對象都可以更改該變量的值,但也可以在不創建該類對象的情況下,通過類名對類變量進行操作
命名格式
static 數據類型 變量名;
static int age;
下面我們來舉個例子,讓大家體會體會類變量的作用
就比如梁山有108位好漢我們給這108位好漢按照次序每人一個編號,這就需要使用到類變量
定義一個Person類
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
public class Person { private int age; private String name; private int id; private static int count= 1 ; public int getId() { return id; } @Override public String toString() { return "Person{" + "age=" + age + ", name='" + name + '\ '' + ", id=" + id + '}' ; } public void setId( int id) { this .id=count; count++; } public Person( int age, String name) { this .age = age; this .name = name; this .id=count; count++; } public Person() { } 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; } } |
主函數
1
2
3
4
5
6
7
8
9
|
public class Test { public static void main(String[] args) { Person one = new Person( 18 , "及時雨宋江" ); System.out.println(one); Person two = new Person( 18 , "盧俊義" ); System.out.println(two); } } |
結果
我們看到id的數值在不斷的+1,這是因為他們的id都等于了一個公共的類變量
接下來我們來介紹靜態方法
靜態方法即類中使用static修飾的方法,該方法使用類名可以直接調用,不需要創建類的對象
定義格式
修飾符 static 返回置類型 方法名 (參數列表){
//執行語句
}
示例
1
2
3
|
public static void eat(){ System.out.println( "吃飯了" ); } |
使用靜態方法的注意事項
靜態方法只可以直接訪問類變量與靜態方法
靜態方法不能訪問普通成員變量或成員方法
靜態方法中不可以使用this關鍵字(因為this代表的是使用該方法的對象,而靜態方法是屬于類的,this無從指向,所以不可以使用)
下面我們寫一段代碼來使用一下靜態方法
1
2
3
4
5
|
public class Person2 { public static void test(){ System.out.println( "這是靜態方法" ); } } |
1
2
3
4
5
6
7
8
9
10
|
public class Test { public static void main(String[] args) { System.out.println( "這是使用類名調用的:" ); Person2.test(); Person2 person2 = new Person2(); System.out.println( "這是使用對象調用的:" ); person2.test(); } } |
運行結果
下面我們從內存的角度來講講靜態的原理
先上代碼
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
33
34
35
36
37
38
39
40
41
42
43
44
|
public class Teacher { private int age; private String name; private static String subject= "math" ; public Teacher( int age, String name) { this .age = age; this .name = name; } public Teacher() { } @Override public String toString() { return "Teacher{" + "age=" + age + ", name='" + name + '\ '' + '}' ; } 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 String getSubject() { return subject; } public static void setSubject(String subject) { Teacher.subject = subject; } } |
1
2
3
4
5
6
|
public class Test { public static void main(String[] args) { Teacher wang = new Teacher( 18 , "wang" ); Teacher li = new Teacher( 19 , "li" ); } } |
小結:普通成員變量操作各自空間,靜態變量操作共享空間
靜態代碼塊,敲重點!!!這個在我們后面學習中會經常使用到
什么是靜態代碼塊呢?
定義在成員位置,使用static修飾的代碼塊{}
位置:類中方法外
執行隨著類的加載而執行且只執行一次,優先于main方法和構造方法的執行
格式
1
2
3
4
|
public class Person { static { } } |
這里就不深究了后面的文章我找幾乎再說說
以上就是static關鍵字的一些基礎知識,如有錯誤請各位批評指正
到此這篇關于JAVA Static關鍵字的用法的文章就介紹到這了,更多相關JAVA Static關鍵字內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://www.cnblogs.com/pjhaymy/p/13255734.html