静态块
静态块是当类加载的时候,对象进行初始化才会被执行吧?而不是说类加载了就会执行静态块吧。
比如:
public class a{
private static List<User> userData=new ArrayList();
}
static{
给userData集合添加信息的代码....
}
//获取集合对象
public static List<User> getUsers(){
return userData;
}
在另外一个类中当
a.getUsers();调用的时候,只有先new,才会执行static的代码吧?
那如果
public class Test {
private static List list=null;
static {
list=new ArrayList();
list.add("你好啊");
System.out.println("静态代码块执行");
System.out.println(list);
}
public static List getList(){
return list;
}
}
这样的情况,只声明了,但是没有实例化new,而是在静态代码块执行了,也可以执行阿。
总结了下:
如果new的话,当jvm加载类的时候,肯定会执行初始化, 正常情况下, jvm加载类的时候都会对其进行初始化, 只有初始化完成了, static才会被执行, 对吧?不new也会被初始化,new肯定会被初始化; 是这个理吗
14
收起
正在回答
1回答
同学你好,同学理解有一点偏差,静态代码块在类加载的时候执行,也就是是在创建对象之前执行。也就是说在项目初始时,静态代码块就已经加载完成了。
静态块常用来执行类属性的初始化,如:可以将某些需要在创建对象之前就赋值的变量或集合静态块中进行书写,提前进行初始。
祝学习愉快!
java工程师2020版
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星