球探球探网足球手机 > Java資訊 > Java中static關鍵字的作用與用法

足球球探证怎么考:Java中static關鍵字的作用與用法

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

球探球探网足球手机 www.607737.live

一、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關鍵字的作用與用法”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。


熱門課程推薦

全部班型支持免費試學

動力節點在線報名表(此信息已加密,請放心填寫)

返回頂部
{ganrao} 青海快3助赢软件 上海天天彩选4开奖 上海时时乐专家杀号 浙江11选5选号技巧 甘肃快3下载 农村聚众赌博怎么处理 黑龙江6+1开奖结果查询表近100期 11137期排列3开奖 广西11选5开奖结果 中国体彩辽宁11选5开奖结果 斗地主真钱 福建36选7技巧 下载股票历史数据 山西快乐十分当天走势 体彩七位数玩法说明 极速赛车开奖官网