2015-02-08 55 views
0
class Test { 
    int a = 100; 
    System.out.println(a); 
} 
class Demo { 
    public static void main(String args[]) { 
     Test t = new Test(); 
    } 
} 

我是新手編程。我在練習時發現了這個代碼。我不明白爲什麼我得到這個錯誤。爲什麼在類體中調用println方法時遇到編譯錯誤? #Java

這是我收到的錯誤。

Demo.java:3: error: <identifier> expected 
System.out.println(a); 
       ^
Demo.java:3: error: <identifier> expected 
System.out.println(a); 
        ^
2 errors 
Compilation failed. 

你們能解釋我爲什麼會遇到這個錯誤嗎?

+1

當問「爲什麼這是一個錯誤?」問題,你應該總是發佈實際的錯誤信息。 – 2015-02-08 04:05:26

+2

你爲什麼認爲這條線不應該有錯誤? – 2015-02-08 04:05:28

+3

你認爲什麼時候應該執行'System.out.println(a);'?你爲什麼這麼認爲? – 2015-02-08 04:16:12

回答

2

您不能直接從java class body調用方法。

Test類創建一個構造函數,並把它的print

class Test { 
    int a = 100; 

    public Test() { 
     System.out.println(a); 
    } 
} 

請注意,如果由於某種原因,你真的想上課的時候不使用構造函數加載到執行的語句,你可以定義一個static塊,這裏一個例子:

class Test { 
    static int a = 100; 

    static { 
     System.out.println(a); 
    } 

} 

然而,這只是參考,真正在你的情況下,沒有必要的。

+0

是的,這是因爲代碼需要在方法或構造函數中。但請注意,向構造函數添加具有副作用的代碼(如將內容打印到屏幕上)並不是一個好習慣。 – immibis 2015-02-08 04:18:11

+0

@DhanukaLakshan我不是那種低估了你的問題的人。 – immibis 2015-02-08 04:28:10

+0

@immibis好的。無論如何謝謝你的支持。 – dnuka 2015-02-08 04:40:30

1

Declaring Classes在Java教程:

在一般情況下,類聲明可以包括這些組件,依次是:

  1. 改性劑,如公共,私有,和許多其他的那你會在稍後遇到。

  2. 類名,首字母大寫。

  3. 該類的父類(超類)的名稱(如果有的話)以關鍵字extends開頭。一個類只能擴展(子類)一個父類。

  4. 由類實現的以逗號分隔的接口列表(如果有)以關鍵字implements爲先。一個類可以實現多個接口。

  5. 類體,被大括號包圍{}。

你不能讓任何函數調用的方法聲明之外。

相關問題