Java面试题:关于静态变量的选择题

【考题题干】分析下面程序,请选择正确的输出结果。
public class NameClass {
        private static int x;
        public static void main(String[] args) {
                name(x);
                System.out.println(x);
        }
        public static void name(int x) {
                x++;
        }
}
请选择一个正确的答案:
A.0
B.1
C.2
D.3
【试题分析】在类NameClass中定义了一个静态变量x,一个静态方法name(int x),注意name()方法中的参数名与静

态变量名是相同的,所以在进x++时,改变的是参数x的值而不是静态变量x的值。这时静态变量x还有另一种身份全局

变量,当然参数x就是局部变量,它的使用范围仅在name()方法中。所以在main()方法中只能调用静态变量x。故打

印出0,A是正确的。
但是如果将上述代码修改如下:
public class NameClass {
        private static int x;
        public static void main(String[] args) {
                name(x);
                System.out.println(x);
        }
        public static void name(int y) {
                x++;
        }
}

那么输出结果为1,只是做了小小的改动却出现了不同的结果,只不过是将name(int x)修改成了name(int y),数

值传递就发生了很大的变化,x++就是针对静态变量x操作的,因此x的值就发生了变化。

【参考答案】A

更多java面试题,java电子书,java视频请参考www.izixue.com

posted @ 2011-02-24 08:25  IT学习  阅读(810)  评论(0编辑  收藏  举报