歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java的Static使用介紹

一、開篇

首先用一個例子開始我們今天的介紹。

定義一個TestStaticClass類如下:

public class TestStaticClass {

 private static int a;
 private int b = 0;
 
 public TestStaticClass() {
  a++;
  b++;
 }
 
 public static void testRun() {
  System.out.println("run TestStaticClass.testRun");
 }
 
 public String toString() {
  return "a = " + a + ", b = " + b;
 }
}

定義MainClass類如下:

public class MainClass { 
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  System.out.println(new TestStaticClass());
  System.out.println(new TestStaticClass());
 }
}

運行的結果如下:

a = 1, b = 1

a = 2, b = 1

為什麼會這樣呢?這就是Static的作用之一,如果使用static來修飾一個變量,那麼該變量就屬於該類所有,而不再屬於該類的某一實例,被類的所有實例共享。因為Java在加載該類的時候為static變量在內存中分配了一個固定的內存空間來存儲,只要TestStaticClass類存在,那麼該變量a所代表的地址空間就不會消失。

在上面的實例中,每一次新建一個TestStaticClass類,都會修改a所在的地址空間的內容,所以就會導致了a和b的值不一致的情況。

除了在實例中用Static來修飾變量外,還可以用來修飾修飾函數和代碼塊。這些在本文中都會詳細的介紹,但是在這之前,必須記得Static的特性:固定。這個不僅僅指固定的地址,還包括固定的大小。使用static修飾的變量等,在編譯時就為這些變量分配了空間。

Copyright © Linux教程網 All Rights Reserved