我写了一个类,但是程序中没有声明这个类的对象。但是这个类中有个静态的变量,我直接通过类名来操作静态变量。。。这种情况下,这个类的构造方法是不是就不会执行?还有,是不是不管是不是声明类的对象,对这个静态变量都没有影响?
5 回答
qq_笑_17
TA贡献1818条经验 获得超7个赞
对的, 你的理解没有错. 静态变量属于类本身, 不属于对象, 因此直接使用类名来操作静态变量, 是不会导致这个类的构造方法执行的.
还有,是不是不管是不是声明类的对象,对这个静态变量都没有影响?
对的. 还是那句话, 静态变量是类的属性, 和这个类的对象没有关系. 所有的对象都共用一个此类的静态变量, 因此不论是否有实例化对象, 都不影响这个静态变量的使用.
哆啦的时光机
TA贡献1779条经验 获得超6个赞
Java程序对类的使用方式:
主动使用
被动使用
所有的Java虚拟机实现必须在每个类或接口被Java程序首次主动使用时才初始化他们。
主动使用:
创建类的实例
访问某个类或接口的静态变量,或者对该静态变量赋值
调用类的静态方法
反射
初始化一个类的子类
Java虚拟机启动是被标明为启动类的类
除了以上六中情况,其他对类的使用都是被动使用,都不会导致类的初始化。当访问一个类的编译时静态常量的时候,并不会导致类的初始化,即编译时就已经确定值的常量
添加回答
举报
0/150
提交
取消