JAVA Static關(guān)鍵字的用法
static關(guān)鍵字的作用:
用來(lái)修飾成員變量和方法,被修飾的成員是屬于類的,而不單單是屬于某個(gè)對(duì)象的,也就是說(shuō),可以不靠對(duì)象來(lái)調(diào)用。
首先我們來(lái)介紹類變量
當(dāng)static修飾成員變量時(shí),該變量稱為類變量,該類的每個(gè)對(duì)象都共享同一個(gè)類變量的值,任何
對(duì)象都可以更改該變量的值,但也可以在不創(chuàng)建該類對(duì)象的情況下,通過(guò)類名對(duì)類變量進(jìn)行操作
命名格式
static 數(shù)據(jù)類型 變量名;
static int age;
下面我們來(lái)舉個(gè)例子,讓大家體會(huì)體會(huì)類變量的作用
就比如梁山有108位好漢我們給這108位好漢按照次序每人一個(gè)編號(hào),這就需要使用到類變量
定義一個(gè)Person類
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; }}
主函數(shù)
public class Test { public static void main(String[] args) { Person one = new Person(18, '及時(shí)雨宋江'); System.out.println(one); Person two = new Person(18, '盧俊義'); System.out.println(two); }}
結(jié)果
我們看到id的數(shù)值在不斷的+1,這是因?yàn)樗麄兊膇d都等于了一個(gè)公共的類變量
接下來(lái)我們來(lái)介紹靜態(tài)方法
靜態(tài)方法即類中使用static修飾的方法,該方法使用類名可以直接調(diào)用,不需要?jiǎng)?chuàng)建類的對(duì)象
定義格式
修飾符 static 返回置類型 方法名 (參數(shù)列表){
//執(zhí)行語(yǔ)句
}
示例
public static void eat(){System.out.println('吃飯了');}
使用靜態(tài)方法的注意事項(xiàng)
靜態(tài)方法只可以直接訪問(wèn)類變量與靜態(tài)方法
靜態(tài)方法不能訪問(wèn)普通成員變量或成員方法
靜態(tài)方法中不可以使用this關(guān)鍵字(因?yàn)閠his代表的是使用該方法的對(duì)象,而靜態(tài)方法是屬于類的,this無(wú)從指向,所以不可以使用)
下面我們寫(xiě)一段代碼來(lái)使用一下靜態(tài)方法
public class Person2 { public static void test(){ System.out.println('這是靜態(tài)方法' ); }}
public class Test { public static void main(String[] args) { System.out.println('這是使用類名調(diào)用的:'); Person2.test(); Person2 person2 = new Person2(); System.out.println('這是使用對(duì)象調(diào)用的:'); person2.test(); }}
運(yùn)行結(jié)果
下面我們從內(nèi)存的角度來(lái)講講靜態(tài)的原理
先上代碼
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; }}
public class Test { public static void main(String[] args) { Teacher wang = new Teacher(18, 'wang'); Teacher li = new Teacher(19, 'li'); }}
小結(jié):普通成員變量操作各自空間,靜態(tài)變量操作共享空間
靜態(tài)代碼塊,敲重點(diǎn)!!!這個(gè)在我們后面學(xué)習(xí)中會(huì)經(jīng)常使用到
什么是靜態(tài)代碼塊呢?
定義在成員位置,使用static修飾的代碼塊{}
位置:類中方法外
執(zhí)行隨著類的加載而執(zhí)行且只執(zhí)行一次,優(yōu)先于main方法和構(gòu)造方法的執(zhí)行
格式
public class Person { static { } }
這里就不深究了后面的文章我找?guī)缀踉僬f(shuō)說(shuō)
以上就是static關(guān)鍵字的一些基礎(chǔ)知識(shí),如有錯(cuò)誤請(qǐng)各位批評(píng)指正
到此這篇關(guān)于JAVA Static關(guān)鍵字的用法的文章就介紹到這了,更多相關(guān)JAVA Static關(guān)鍵字內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. 使用css實(shí)現(xiàn)全兼容tooltip提示框2. PHP函數(shù)原理理解詳談3. 告別AJAX實(shí)現(xiàn)無(wú)刷新提交表單4. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)5. SharePoint Server 2019新特性介紹6. XML入門(mén)的常見(jiàn)問(wèn)題(一)7. 詳解盒子端CSS動(dòng)畫(huà)性能提升8. Vue+elementUI下拉框自定義顏色選擇器方式9. ASP中常用的22個(gè)FSO文件操作函數(shù)整理10. XML入門(mén)的常見(jiàn)問(wèn)題(四)
