1. 程式人生 > 其它 >java static詳解

java static詳解

全是乾貨!全是乾貨!全是乾貨!事先宣告,這裡僅是個人看法,後期有了深造會接著更新!謝謝大家!!


這裡先看到static在類中可以做什麼?static在類中可以修飾變數和方法。

接著是static獨有的特點,:

  1. 會隨著類的載入而載入

public Student(){
  system.out.println(666);
}
Student student=null;
//寫到這裡。Student一旦出現,系統看到類的名字,就會載入到記憶體。

    2. 優於物件存在

public Student(){
  system.out.println(666);
}
Student student=new
Student Student studentOne=new Student
//類只加載一次,載入的同時Student裡邊的內容已經在記憶體中出現了;
//new出來的物件,出現了兩次,構造方法執行了兩次;但沒有執行。

  3. 被所有物件共享

  4. 可以通過類名呼叫

以上,static的特點就介紹完了,之所以在前兩個方法舉出例子是因為作者覺著有必要拿出來詳解一哈。

  再然後就是static的出現特別廣泛,main方法裡有它,它也可以單獨拿出來用,就很好奇靜態變數跟成員變數之間的區別了。

這裡看一下靜態變數跟成員變數之間的區別

  有3點,1、所屬不同;2、記憶體中出現的位置不同;3、記憶體中出現時間不同。

  所屬不同:

    靜態變數也稱為類變數;

    成員變數稱為例項物件(物件變數);

  記憶體中出現位置不同:

    靜態變數儲存於方法區的靜態區。

    成員變數儲存區堆記憶體。

  記憶體中出現時間不同:

    靜態變數隨著類的載入而載入,隨著類的消失而消失;

    成員變數隨著物件的建立而存在,隨著物件的消失而消失。

 最後附上刷過的題; 

    public class Student {
      static{ System.out.println("Student 靜態程式碼塊"); } { System.out.println("Student 程式碼塊"); } public Student(){ System.out.println("Student 構造方法"); }  
      }
public class StudentTest {
  static
{ System.out.println("執行順序"); } public static void main(String[] args) { System.out.println("main方法裡邊的內容程式碼塊不難"); Student s1=new Student(); Student s2=new Student();    }
}

可以看出程式碼塊的順序以及打印出來的結果大家可以放在評論區,可以一起為剛上路的小白做參考呀!