java中static特殊性和final(static成員直接被訪問,this不能用在static方法中,static不可訪問非static)


java的static關鍵字

    java中,static修飾的成員變量和成員方法叫靜態變量和靜態方法,不依賴類特定的實例,被類的所有實例共享。

靜態變量或類變量 和 實例變量,區別是:

    靜態變量在內存中只有一個拷貝(節省內存),JVM只分配一次內存,在加載類的過程中完成靜態變量的內存分配,用類名直接訪問,也可以通過對象來訪問(不推薦,盡量不用)。
    實例變量在初始化后一個實例時為該實例分配一次內存,多個實例之間的實例變量是獨立的

static的方法和變量可直接用類名訪問;

    java中,Static類方法和類變量,先於實例(對象)存在,不用初始化類就可以直接用類名訪問。在類加載時Java虛擬機根據類名在運行時數據區的方法區內找到Static方法。

Static方法不能調用非靜態成員

    但靜態方法不能調用非靜態方法,以及引用非靜態成員變量。因為類未初始化,沒有實例,沒有分配內存,不能調用。

非Static方法可以調用Static方法

    實例化后的方法,通過對象自身可以引用static方法

在static方法中不能使用this

    在static方法中不能用this來訪問對象。this指針是類對象自身引用,需要類初始化類對象后才能使用,也就是new classA()后才能分配內存,才有this。
    如果設計類時,static函數必須用到某些類成員,則必須將該成員也定義為static。(內存有要求,要考慮內存是否夠用)

所以,java類main方法必須是 public static的

    類的main方法這樣就可以被外部直接訪問,(未住初始化就可以訪問)。並且,不初始化類對象不能訪問類的非static成員。

類未實例化(初始化new())時,需要訪問類內部函數,用java反射機制

java中final關鍵字

1.final的類不允許被繼承。
2.final方法不允許被覆蓋。
3.final變量只能被賦一次值。

判斷數: if(! parentRegionID.matches(“\d+”))
判斷字符串:if(! parentRegionID.matches(“\w+”))
\轉義
^開頭


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM