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

admin2010-02-22  36

问题 有以下源程序:    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类变量,在 Class A中调用的b.go(10),只不过是Class B中的一个局部变量,通过调用Class B中的 go方法可以实现生成一个Class A对象,并给这个新生成的对象赋予Class A中的类变量y的值。
转载请注明原文地址:https://jikaoti.com/ti/gRb0FFFM
0

最新回复(0)