Java学习笔记之static
1.static可以用于修飾成員變量、方法以及塊,并不會改變類中成員的權限修飾,如:private修飾的成員變量,類外只能類名或非私有方法調用,而不能使用對象名調用。
2.static方法和成員變量,可使用類名直接調用,而不需要實例化:類名.方法名();類名.變量名();
也可以實例化后,使用對象名調用。
3.static方法(靜態方法):
3.1 靜態方法中,沒有this,因為沒有創建對象;
3.2 靜態方法中不能調用非靜態成員變量、方法,但非靜態方法可以調用靜態成員變量、方法;
4.static變量(靜態變量):
4.1 靜態變量在類第一次加載時,就會初始化并賦值;
4.2 每一個靜態變量在內存中都是只有一個副本,所有對象共享這個副本,無論哪個對象或是類名調用修改,都會使之變化;
4.3 static不能用于修飾局部變量,這是Java語法規定的。
5.static塊:
5.1 靜態塊可以在類的任何位置定義,會在類第一次加載時,依次調用,并且只調用一次,即還沒創建對象便已調用:
public class Test extends Base{static{System.out.println("test static");}public Test(){System.out.println("test constructor");}public static void main(String[] args) {new Test();} }class Base{static{System.out.println("base static");}public Base(){System.out.println("base constructor");} } base static test static base constructor test constructor View Code
執行過程:先要尋找到main方法,因為main方法是程序的入口,但是在執行main方法之前,必須先加載Test類,而在加載Test類的時候發現Test類繼承自Base類,因此會轉去先加載Base類,在加載Base類的時候,發現有static塊,便執行了static塊。在Base類加載完成之后,便繼續加載Test類,然后發現Test類中也有static塊,便執行static塊。在加載完所需的類之后,便開始執行main方法。在main方法中執行new Test()的時候會先調用父類的構造器,然后再調用自身的構造器。因此,便出現了上面的輸出結果。
?
轉載于:https://www.cnblogs.com/qingyibusi/p/5769377.html
總結
以上是生活随笔為你收集整理的Java学习笔记之static的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 纪中2016.8.13比赛不明总结
- 下一篇: 经常遇到的浏览器的兼容性有哪些?原因?解