Java中靜態變量和動態變量


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

 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM