2016-03-23 2 views
0
class A { 
    int n; 
    n=1; 
} 

エラー:識別子はn = 1を指していると予想されます。なぜインスタンス変数を2つのステップで初期化できないのですか

なぜこのエラーが発生しますか?

+5

'N = 1;'唯一の方法/コンストラクタ/初期化ブロックに表示されます。 – Eran

+0

あなたはあなたが尋ねていることを知っているかどうかわかりません....エランは正しいです! – marco

答えて

0

解決策はすでに他の回答で指摘されているように: と書いてください。int n =1;を1行で記述してください。

しかし、このエラーの理由を理解するには、クラス本体の中にステートメントを記述できないことがあります。 @Eranが指摘しているように、ステートメントはメソッド/コンストラクタ/初期化ブロック内にしか存在できません。

あなたは、単一の行に int n = 1; を行うと、それは特別な声明/発現と定義と呼ばれているのです。特殊なケースとして許可されています。

ここでステートメントと式について詳しく読む:JAVA statements and expressions

0

をしかし、これが可能である:

public class A{ 
    int n; 
    { 
     n = 1; 
    } 
} 
関連する問題