天天看點

總結static和final關鍵字

總結static和final關鍵字

1.static

1.static有什麼作用

static:可以在沒有建立對象時候使用。

  1. 修飾變量:是全局變量,在類加載之後放于方法區,隻在初始化時加載一次,且全局共享。如果不賦初值就預設為0。
  2. 修改方法:靜态方法不能調用非靜态的變量和方法(因為非靜态的方法和變量需要對象來調用,但是不可能使用),非靜态方法能夠使用靜态方法,使用“類名.方法”調用,而不能用對象調用。因為this也是通過對象調用,所有不能使用this。可以在沒有建立任何對象的前提下,僅僅通過類本身來調用static方法。這實際上正是static方法的主要用途。
  3. 修飾類:隻有一種情況,靜态内部類。使用場景:靜态内部類使用場景一般是當外部類需要使用内部類,而内部類無需外部類資源,并且内部類可以單獨建立的時候。特點:
    1. 内部類隻能通路外部類靜态的變量和方法。
    2. 靜态内部類能聲名普通的變量和方法,而普通内部類不能聲名靜态方法和變量。
  1. 修飾代碼塊:可以優化性能,在類加載時調用。且隻調用一次。(加載順序 父類的靜态代碼塊-子類的靜态代碼塊-父類的構造方法-子類的構造方法),靜态語句塊中隻能通路定義在靜态語句塊之前的變量,定義在它之後的變量可以指派,但不能通路

2.為什麼要使用靜态方法

靜态方法的好處就是不用生成類的執行個體就可以直接調用。

static方法修飾的成員不再屬于某個對象,而是屬于它所在的類。隻需要通過其類名就可以通路,不需要再消耗資源反複建立對象。

在類第一次加載的時候,static就已經在記憶體中了,直到程式結束後,該記憶體才會釋放。

如果不是static修飾的成員函數,在使用完之後就會立即被JVM回收。

3.什麼時候使用static?

如果這個方法是作為一個工具來使用的,就聲明為static,不需要new一個對象就可以使用。比如:connect DB就可以聲明一個Connection()的static方法。

2.final

final主要的作用就是防止修飾的對象改變。

  • 1.修飾變量:不允許變量改變。
  • 2.修飾方法:防止繼承的重寫改變該方法。
  • 3.修飾類:不允許繼承該類。防止被重寫。