1. 程式人生 > >Java中靜態變量和動態變量

Java中靜態變量和動態變量

.com pan 1-1 一道 args ict print stat 類的加載

這是我面試遇到的一道題,題目如下:

 1 public class StaticTest {
 2     private static int b = 1;
 3     private int a = 1;
 4 
 5     public static void main(String[] args) {
 6         StaticTest a1 = new StaticTest();
 7         StaticTest a2 = new StaticTest();
 8         a1.a = a1.a+1;
 9         a2.a = a2.a+1;
10 System.out.println("a1.a="+a1.a); 11 System.out.println("a2.a="+a2.a); 12 13 StaticTest b1 = new StaticTest(); 14 StaticTest b2 = new StaticTest(); 15 b1.b = b1.b+1; 16 b2.b = b2.b+1; 17 System.out.println("b1.b="+b1.b); 18 System.out.println("b2.b="+b2.b);
19 } 20 }

這道題考察的是靜態變量和動態變量的區別,答案是2,2 3,3。

對於a的值是2,是毫無疑問的。

b在這裏有static修飾,說明b是靜態變量,可以直接StaticTest.b來調用,a需要new出StaticTest 對象來調用。

b隨著類的加載而存在,隨著類的消失而消失;a隨著對象的創建而存在,隨著對象被回收而釋放

  1. b1.b = b1.b+1:這一步計算得出b=2
  2. b2.b = b2.b+1;因為StaticTest一直存在,所以此時b的值為2,最終b的值為2+1

技術分享

Java中靜態變量和動態變量