A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sunalong 中级黑马   /  2013-7-15 21:35  /  3502 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨兴庭 于 2013-7-16 17:50 编辑

关于静态变量的创建,哪一个选项是正确的?(    )
  A.一旦一个静态变量被分配,它就不允许改变
  B.一个静态变量在一个方法中创建,它在被调用的时候值保持不变
  C.在任意多个类的实例中,一个静态变量的实例只存在一个
  D.一个静态的标识符只能被应用于primitive value
  解析:选项A是对常量的描述。
  选项B是为了迷惑那些习惯使用VB的人。
  选项D所说的静态标识符可以被应用到类(但只是一个内部类)、方法和变量中。
  哪位哥们给给出代码示例讲解一下?
  我感觉ABC都对,而D感觉不出来、

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

1 个回复

倒序浏览
       A.一旦一个静态变量被分配,它就不允许改变
  B.一个静态变量在一个方法中创建,它在被调用的时候值保持不变
  C.在任意多个类的实例中,一个静态变量的实例只存在一个
  D.一个静态的标识符只能被应用于primitive value


我认为只有C正确
public class Demo {
   public static int num=3;
}

public class Text {
        public static void main(String[] args) {
                System.out.println("原来的值:"+Demo.num);
                Demo.num=10;
                System.out.println("改变后的值:"+Demo.num);
        }
}结果:

原来的值:3
改变后的值:10

从结果可以判断出:A和D不正确  静态变量的值是可以被改变的,不能由private来修饰,否则不能有类名.静态变量 调用   如果是final static 声明的变量的值不可以被改变。

public static int getStatic(){
            static int num=5;
            return num;
   }一个方法中不能声明静态的变量,否则编译失败。所以B错误


只要是类加载后,静态变量就在内存中存储,只要是本类调用,就只有这么一个值,其他的类不能调用,

public class Demo {
        public static int num=5;
        public static int getNum() {
                return num;
        }
        public static void setNum(int num) {
                Demo.num = num;
        }       
}

public class Text {
        public static void main(String[] args) {
                Demo d1=new Demo();
                System.out.println("d1--->"+d1.getNum());
                d1.setNum(20);//改变静态变量
                Demo d2=new Demo();
                System.out.println("d2--->"+d2.getNum());
                Demo d3=new Demo();
                System.out.println("d3--->"+d3.getNum());
        }
}

结果:
d1--->5
d2--->20
d3--->20

从结果中可以判断出:C正确。只要其中一个类的对象改变了静态变量的值,其他的对象的静态变量的值也跟着改变,就说明是同一个变量。
希望我的解释对你有帮助!

评分

参与人数 1技术分 +1 收起 理由
杜光 + 1 每天提问并回答问题,是对知识的复习和积累.

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马