问题描述
- 假设有一个类,我只对这个类的引用做一个声明,那么这个类中的static方法会被初始化吗
-
假设下面这种情况,test1中的do方法会被初始化吗?
public class test{
public static void main(string []args){
test1 t;
}
}
class test1{
int i;
static void do(){}
}
解决方案
第一次访问的含义是,访问了这个静态类中的任何方法、属性、字段,那么所有的属性都会被初始化。
解决方案二:
方法不存在什么初始化,只用成员变量需要初始化。
而且你test1 t;
t此时是指向null,没法调用do。需要先new。
解决方案三:
看错了,static方法可以调用,不需要初始化。而且不需要对象。
用 test1.do 调用,而不是用 t.do
解决方案四:
只定义不使用的是不会被初始化的
解决方案五:
会在第一次访问这个静态方法的时候初始化。换句话说你的代码从来没有使用这个静态类型,它永远不会初始化。
解决方案六:
? 创建类的实例
? 访问某个类或接口的静态变量,或者对该静态变量赋值
? 调用类的静态方法
? 反射(如Class.forName(“com.shengsiyuan.Test”))
? 初始化一个类的子类
? Java虚拟机启动时被标明为启动类的类(Java Test).
出现以上6中情况,才会初始化,初始化的是什么呢?初始化的是静态成员变量或者执行静态代码块
只对这个类的引用做一个声明,不会初始化
解决方案七:
方法不用初始化,对于static方法,直接通过 类名.xxxx调用
解决方案八:
对于static方法,只有在第一次类加载时被初始化,之后就不会了!
解决方案九:
直接类名来访问,静态方法。
时间: 2024-10-31 13:57:22