あなたのコードは「デモンストレーション」コードのようですが、続行する前にまず座って処理について少し学ぶ必要があることを示す以外に、実際には重要なことは何もしません。チュートリアル。価値がある。
あなたが与えたコードはもっと賢明に書くことができますが、代わりに私は質問に答えます。処理では、Javaのスコープ規則のバリエーションを使用します。ローカル変数はオブジェクトインスタンス変数よりも優先され、グローバル変数よりも優先されます。
int x = 0;
int y = 50;
class Thing {
int y = 10;
Thing() {
// x is global, y is global and object instance
println("x (in Thing): "+x);
println("y (in Thing): "+y);
declareAndCheck();
}
void declareAndCheck() {
// now we make some local variables: they win.
int x = 40;
int y = 100;
println("x (local declared): "+x);
println("y (local declared): "+y);
}
}
void setup() {
println("x (global): "+x);
println("y (global): "+y);
Thing t = new Thing();
// and global is still global
println("x (global, again): "+x);
println("y (global, again): "+y);
}
これにより、次の出力が生成されます。
x (global): 0
y (global): 50
x (in Thing): 0
y (in Thing): 10
x (local declared): 40
y (local declared): 100
x (global, again): 0
y (global, again): 50
なんで?最初にこれを見る:
x (global): 0
y (global): 50
xとyは値0と50のグローバル変数だからです。十分に単純です。次に、次のように表示されます。
x (in Thing): 0
y (in Thing): 10
「Thing」オブジェクトには、オブジェクトインスタンス変数「y」があり、それとグローバル変数の間の名前の競合に勝ちます。
次に、declareAndCheckと入力します。ここで、次のように表示されます。
x (local declared): 40
y (local declared): 100
これで、グローバルxとローカルxがあり、ローカルが常に勝ち、インスタンスyとローカルyがあり、ローカルが常に勝ちます。
最後に、xとyをグローバルコンテキストで再度出力します。競合がないため、次のようになります。
x (global, again): 0
y (global, again): 50
そして、それがあなたにとって意味をなさない場合は、それらのチュートリアルを実行してください、彼らはあなたにProcessingでのプログラミングを教えます=)