程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> test-寫出下列程序的運行結果

test-寫出下列程序的運行結果

編輯:編程綜合問答
寫出下列程序的運行結果

public class Test {
public static void main(String[] args)
{
A obj = A.getInstance();
System.out.println("obj.num1 = " + obj.num1);
System.out.println("obj.num2 = " + obj.num2);
}
}

class A
{
private static A obj = new A();
public static int num1 = 0;
public static int num2;
private A()
{
num1++;
num2++;
}
public static A getInstance()
{
return obj;
}
}

運行結果:
obj.num1 = 0
obj.num2 = 1
請問為什麼 num1=0 而不等於1? 謝謝!

最佳回答:


主要是成員變量的初始化順序問題。

 1、A obj = A.getInstance();這裡需要初始化class A,
 2、類A中成員變量有下面3個
 private static A obj = new A();//執行這裡時會執行構造函數,這時候num1++,num1變成1
public static int num1 = 0;//執行完上面一句,才執行這一句,num1因為是static的,重新被置為0
public static int num2;//執行num2時,沒有賦值初始值,不改變。注意默認值和賦值是2個不同的事情。

所以運行後obj.num1=0,obj.num2=1

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved