黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java中static關鍵字的作用與用法

Java中static關鍵字的作用與用法

更新時間:2020-07-02 16:30:22 來源:動力節點 瀏覽2350次

一、static關鍵字的特點:

static是一個修飾符,用于修飾類的成員方法、類的成員變量,另外可以編寫static代碼塊來優化程序性能。

1.static修飾成員方法

static修飾的方法一般稱作靜態方法,由于靜態方法不依賴于任何對象就可以進行訪問,因此對于靜態方法來說,是沒有this的,因為它不依附于任何對象,既然都沒有對象,就談不上this了。并且由于這個特性,在靜態方法中不能訪問類的非靜態成員變量和非靜態成員方法,因為非靜態成員方法/變量都必須依賴具體的對象才能夠被調用。

但是要注意的是,雖然在靜態方法中不能訪問非靜態成員方法和非靜態成員變量,但是在非靜態成員方法中是可以訪問靜態成員方法/變量的。例如:

Java中static關鍵字的作用與用法

class?Person{
????private?Date?birthDate;
?
????public?Person(Date?birthDate)?{
????????this.birthDate?=?birthDate;
????}
?
????boolean?isBornBoomer()?{
????????Date?startDate?=?Date.valueOf("1946");
????????Date?endDate?=?Date.valueOf("1964");
????????return?birthDate.compareTo(startDate)>=0?&&?birthDate.compareTo(endDate)?<?0;
????}
}

isBornBoomer是用來判斷一個人是否是1946-1964年出生的,而每次isBornBoomer被調用的時候,都會生成startDate和birthDate兩個對象,造成了空間浪費,如果改成下面這樣效率會更高:

class?Person?{
????private?Date?birthDate;
????private?static?Date?startDate,?endDate;
?
????static?{
????????startDate?=?Date.valueOf("1946");
????????endDate?=?Date.valueOf("1964");
????}
?
????public?Person(Date?birthDate)?{
????????this.birthDate?=?birthDate;
????}
?
????boolean?isBornBoomer()?{
????????return?birthDate.compareTo(startDate)?>=?0?&&?birthDate.compareTo(endDate)?<?0;
????}
}

因此,很多時候會將一些只需要進行一次的初始化操作都放在static代碼塊中進行。

二、static關鍵字的誤區

1.與C/C++中的static不同,Java中的static關鍵字不會影響到變量的變量或者方法的作用域。在Java中能夠影響到訪問權限的只有private、public、protected這幾個關鍵字。示例如下:

Java中static關鍵字的作用與用法

提示錯誤,說明static關鍵字并不會改變變量和方法的訪問權限。

2.雖然對于靜態方法來說沒有this,但是我們在非靜態方法中能夠通過this訪問靜態方法成員變量。如下:

public?class?Test?{
????static?int?value?=?11;
????public?static?void?main(String[]?args)?{
????????new?Test().printValue();
????}
????private?void?printValue()?{
????????int?value?=?22;
????????System.out.println(this.value);
????}
}
輸出的結果是:11

這里的this表示的是當前對象,那么通過new Test()來調用printValue的話,當前對象就是通過new Test()生成的對象。而static變量是被對象所享有的,因此在printValue中的this.value的值毫無疑問是11。在printValue方法內部的value是局部變量,根本不可能與this關聯,所以輸出11。需要記住的是:靜態成員變量雖然獨立于對象,但是不代表不可以通過對象去訪問,所有的靜態方法和靜態變量都可以通過對象訪問(只要權限足夠)。

3.在C/C++中static關鍵字是可以作用于局部變量的,但是在Java中是不允許使用static修飾局部變量的。這是Java語法的規定。

Java中static關鍵字的作用與用法

以上就是動力節點java培訓機構的小編針對“Java中static關鍵字的作用與用法”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产精品人伦久久 | 国内精品久久久久久久久野战 | 亚洲日本黄色片 | 国产精品视频国产永久视频 | 动漫精品一区二区三区视频 | 国产91网站在线观看 | 1024手机在线看 | 欧美不卡一区二区三区免 | 亚洲国产欧美日韩 | 国产一区亚洲二区三区 | 人人干人人爱 | 午夜高清免费在线观看 | 国产欧美亚洲精品a | 国产综合亚洲专区在线 | 大香伊人网 | 亚洲福利视频网 | 米奇777第四久久久99 | 日韩手机在线免费视频 | 欧美八区| 一区二区三区在线观看视频 | 在线观看国产亚洲 | aa看片| 日韩欧一级毛片在线播无遮挡 | 成年人在线视频免费观看 | 国产高清在线观看麻豆 | 在线一区三区四区产品动漫 | 成年人网站在线观看免费 | 九九热视频在线免费观看 | 国产高清一区二区三区四区 | 中文字幕成人网 | 日韩成人免费一级毛片 | 宅男噜噜噜一区二区三区 | 亚洲 欧洲 日产 韩国在线 | 成人小视频免费观看 | 国产亚洲精彩视频 | 男男1v1高h猛烈做哭bl强制 | 久久中文字幕网 | 好色站| 久久亚洲最大成人网4438 | 成人私人影院www片免费高清 | 91高清国产经典在线观看 |