有以下源程序: package test; public class ClassA { int x=20; static int y=6; public static void main(String

admin2010-07-28  33

问题 有以下源程序:    package test;    public class ClassA    {       int x=20;       static int y=6;       public static void main(String args[])       {          ClassB  b=new ClassB();          b.go(10);          System.out.println("x="+b.x);       }    }    class ClassB    {       int x;       void go(int y)       {           ClassA a=new ClassA();           x=a.y;       }    }    上述源程序文件的运行结果为(    )。

选项 A、x=10
B、x=20
C、x=6
D、编译不通过

答案4

解析 本题考查在Java中静态变量(类变量)的用法规则。对于static修饰的成员变量和成员方法,可以直接使用类名对它们进行访问。对于类变量,也就是static修饰的变量,在生成类的第一个实例对象时,Java运行时,系统对这个对象的每个类变量分配一块内存,以后再生成该类的实例对象时,所有实例对象将共享同一个类变量,每个实例对象对类变量的改变都会直接影响到其他实例对象,类变量除了可以通过类名直接访问外,还可以通过实例对象来访问。在本例中生成了一个static int y=6类变量,在 ClassA中调用的b.go(10),只不过是Class B中的一个局部变量,通过调用Class B中的 go方法可以实现生成一个Class A对象,并给这个新生成的对象赋予Class A中的类变量y的值。
转载请注明原文地址:https://kaotiyun.com/show/Qf9p777K
0

最新回复(0)