A-A+

有以下源程序: package test; public class ClassA { in

2022-08-06 03:19:15 问答库 阅读 175 次

问题详情

有以下源程序: 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.编译不通过请帮忙给出正确答案和分析,谢谢!

参考答案

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

考点:源程序