OneExerciseOne創建一個類,它包含一個int域,一個char域,他們都沒有初始化,驗證Java執行了默認初始化
在學習《Thinking In java》時,遇到Chapter 2的Exercise 1,問題是這麽說的“/**創建一個類,它包含一個int域,一個char域,他們都沒有初始化,將他們的值打印出來,驗證Java執行了默認初始化”。剛拿到這道題目我是這麽寫的。
1.
package Two;
public class ExerciseOne {
public static void main(String [] args)
{
int a;
char c;
System.out.println(a);
System.out.println(c);
}
}
/**
後果很容易想到,第一次動手寫肯定不咋地,就成了不能編譯的程序了
**/
對程序稍作修改之後,成了下面這個樣子
2.
package Two;
public class ExerciseOne{
static int a;
static char c;
public static void main(String [] args)
{
System.out.println(a);
System.out.println(c);
}
}
/****這次能夠運行的原因是,將類Exercise裏面的成員變量修飾為static,之所以這麽做的原因是,我們都知道main()方法是static修飾的,所以其只能訪問static修飾的成員,原因是沒有被static修飾的成員需要先創建對象才能訪問,而靜態方法則在被調用時可以不創建任何對象。**/
而關於對象與引用之間的說明,請大家自己閱讀Java書籍,相信會有很多收貨。
最後,我又看了看標準答案,如下:
/**標準答案
package Two;
public class ExerciseOne{
int i;
char c;
public ExerciseOne(){
System.out.println("i="+i);
System.out.println("c="+c);
}
public static void main(String []args){
new ExerciseOne();
}
}**/
標準答案的關鍵是用生成一個實例對象來“發送消息”給類ExerciseOne的Int與char 成員變量,說我要調用你們了,接著就打印出值了。
OneExerciseOne創建一個類,它包含一個int域,一個char域,他們都沒有初始化,驗證Java執行了默認初始化