全局变量与局部变量的极其问题
代码如下 在Scoping 类中有个全局变量x
import java.awt.Graphics;
import java.applet.Applet;
public class Scoping extends Applet {
int x=1; //全局变量
public void paint(Graphics g) {
g.drawString("See command line for output", 25, 25 );
int x=5; //局部变量
System.out.println("local x in paint is "+x);
a(); //为什么a()方法中的x变量是用的Scoping 类中定义的全局变量x,
b();
a();
b();
System.out.println("\nlocal x in paint is "+x);
}
void a() {
int x=25;
System.out.println("\nlocal x in a is "+x+" after entering a");
++x;
System.out.println("local x in a is "+x+" before exiting a");
}
void b() {
System.out.println("\ninstance variable x is "+x+" on entering b");
x*=10;
System.out.println("\ninstance variable x is "+x+" on entering b");
}
}
程序输出如下:
local x in paint is 5
local x in a is 25 after entering a
local x in a is 26 before exiting a
instance variable x is 1 on entering b
instance variable x is 10 on entering b
local x in a is 25 after entering a
local x in a is 26 before exiting a
instance variable x is 10 on entering b
instance variable x is 100 on entering b
local x in paint is 5
如上代码所示a()方法在public void paint(Graphics g){}中而paint中已定义了个局部的变量x,那么为什么在paint中a()方法的中的x没给屏蔽掉而还是用的那个全局变量,是不是a()在paint外定义的缘故呢??