您的代码似乎是“演示”代码,但它实际上并没有做任何重要的事情,除了表明您可能需要先坐下来了解一下处理,然后再继续 - 点击 processing.org 并运行一些教程。这很值得。
您提供的代码可以写得更明智,但我会回答这个问题;处理使用 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 =)