何が起こっているのかについての明示的な説明を見つけることができなかったので、これをコミュニティに持ち込むと思った。プリミティブクラス変数の算術演算
public class Temp {
static int i;
int j;
int sum = i+j;
}
public class Main{
public static void main(String[] args){
Temp obj = new Temp();
obj.i = 1;
obj.j = 2;
System.out.println(obj.sum); //returns '0'
}}
'sum'変数が空であることをインスタンス化時に整数iとjの両方が空だったからですか?
ありがとうございます!
[*§4.12.5を参照してください。変数の初期値*](http://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.12.5)を参照してください。 – trashgod
"空"またはより正確には0でした。Javaプリミティブは決して "空"ではなく、0(または偽)に初期化されます。参照は 'null 'でもかまいません。実際には"空 "でもなく、nullも値です。 – markspace
マークスペースが何を言っているかを書き返す。 Javaには "空の"変数やフィールドはありません。すべての変数またはフィールドは、いつでも見ることができる*一定の値*を持ちます。その値は、明確な初期化(例えば 'int foo = 42;')または暗黙の*デフォルト初期化*のいずれかの結果です。あなたの精神モデルとあなたの語彙から "空の変数"を削除してください! –