我写了一个类,但是程序中没有声明这个类的对象。但是这个类中有个静态的变量,我直接通过类名来操作静态变量。。。这种情况下,这个类的构造方法是不是就不会执行?还有,是不是不管是不是声明类的对象,对这个静态变量都没有影响?
我写了一个类,但是程序中没有声明这个类的对象。但是这个类中有个静态的变量,我直接通过类名来操作静态变量。。。这种情况下,这个类的构造方法是不是就不会执行?还有,是不是不管是不是声明类的对象,对这个静态变量都没有影响?
主动使用
被动使用
所有的Java虚拟机实现必须在每个类或接口被Java程序首次主动使用时才初始化他们。
创建类的实例
访问某个类或接口的静态变量,或者对该静态变量赋值
调用类的静态方法
反射
初始化一个类的子类
Java虚拟机启动是被标明为启动类的类
除了以上六中情况,其他对类的使用都是被动使用,都不会导致类的初始化。当访问一个类的编译时静态常量的时候,并不会导致类的初始化,即编译时就已经确定值的常量
8 回答6.4k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
3 回答1.6k 阅读✓ 已解决
对的, 你的理解没有错. 静态变量属于类本身, 不属于对象, 因此直接使用类名来操作静态变量, 是不会导致这个类的构造方法执行的.
对的. 还是那句话, 静态变量是类的属性, 和这个类的对象没有关系. 所有的对象都共用一个此类的静态变量, 因此不论是否有实例化对象, 都不影响这个静态变量的使用.