final 和static的使用

前兩篇文章介紹了final和static的使用,下面總結一下他們兩個作用。

以下是網絡上的總結,解釋的很詳細:

static可以修飾代碼塊和變量,而final可以修飾變量和類。
static 表示靜態的,從始至終只獲得一塊內存空間。而且這塊空間的資源還具有“全局性,就是說所有的成員都可以無條件引用;

另外,static修飾的不用程序調用,只要該類被執行,static修飾的也被執行。如最常見的,Public static void main(){};又如 static int a;那麼所有的成員都可以引用a。
final 表示最終的,它修飾的類不能有子類。它修飾的變量是不可變的常數,所以final的變量要立刻賦值。如:class final A {}類A就不能被別的類繼承;final String a=“abc”;那麼a永遠只能是abc。fianl static String a=“abc”;那麼a不但是一個常數,還是一個全局常數。

static如果用這個修飾你女朋友就意味着你女朋友是所有人的女朋友。
final如果用這個修飾你女朋友那就是意味着她已經變成你老婆了,你甩不掉了。只給你一次初始化機會。

爲什麼接口中的常量必須使用public static final修飾
public: 使接口的實現類可以使用這個常量
static:static修飾就表示它屬於類的,隨的類的加載而存在的,如果是非static的話,
    就表示屬於對象的,只有建立對象時纔有它,而接口是不能建立對象的,所以
    接口的常量必須定義爲static
final:final修飾就是保證接口定義的常量不能被實現類去修改,如果沒有final的話,
    由子類隨意去修改的話,接口建立這個常量就沒有意義了。

最後看一個運行實例:

[java] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. public class Demo03 {  
  2.     public static void main(String[] args) {  
  3.         MyClass myClass1 = new MyClass();  
  4.         MyClass myClass2 = new MyClass();  
  5.         System.out.println("final聲明的隨機數:"+myClass1.i);  
  6.         System.out.println("static聲明的隨機數:"+myClass1.j);  
  7.         System.out.println("再次調用final聲明的隨機數:"+myClass2.i);  
  8.         System.out.println("再次調用static聲明的隨機數:"+myClass2.j);  
  9.     }  
  10. }  
  11. class MyClass {  
  12.     public final double i = Math.random();  
  13.     public static double j = Math.random();  
  14. }  

運行結果:

[java] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. final聲明的隨機數:0.9639843050925515  
  2. static聲明的隨機數:0.9900959701661931  
  3. 再次調用final聲明的隨機數:0.6144552229158678  
  4. 再次調用static聲明的隨機數:0.9900959701661931  
發佈了64 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章