歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java的Static使用介紹

Java的Static使用介紹

日期:2017/3/1 10:03:03   编辑:Linux編程

一、開篇

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

定義一個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