java类的构造方法一定会执行吗?

我写了一个类,但是程序中没有声明这个类的对象。但是这个类中有个静态的变量,我直接通过类名来操作静态变量。。。这种情况下,这个类的构造方法是不是就不会执行?还有,是不是不管是不是声明类的对象,对这个静态变量都没有影响?

阅读 5.7k
5 个回答

对的, 你的理解没有错. 静态变量属于类本身, 不属于对象, 因此直接使用类名来操作静态变量, 是不会导致这个类的构造方法执行的.

还有,是不是不管是不是声明类的对象,对这个静态变量都没有影响?

对的. 还是那句话, 静态变量是类的属性, 和这个类的对象没有关系. 所有的对象都共用一个此类的静态变量, 因此不论是否有实例化对象, 都不影响这个静态变量的使用.

区别开类型和实例

Java程序对类的使用方式:

  • 主动使用

  • 被动使用

所有的Java虚拟机实现必须在每个类或接口被Java程序首次主动使用时才初始化他们。

主动使用:

  • 创建类的实例

  • 访问某个类或接口的静态变量,或者对该静态变量赋值

  • 调用类的静态方法

  • 反射

  • 初始化一个类的子类

  • Java虚拟机启动是被标明为启动类的类

除了以上六中情况,其他对类的使用都是被动使用,都不会导致类的初始化。当访问一个类的编译时静态常量的时候,并不会导致类的初始化,即编译时就已经确定值的常量

java静态方法或者静态变量 都独立存在于方法区 从main开始执行 静态的方法或变量就在那里 随时调用。

新手上路,请多包涵

静态变量与代码块是先于构造器加载,且只加载一次,类似的当作一个全局变量来理解,虽然java是没有全局变量。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题