JAVA中一个类里的 static{.....} 是什么? 是静态构造函数么?
如classSqlHelper(){static{......}}请告诉我这个static是什么?还有这个static的生命周期,什么时候开始执行这个static...
如
class SqlHelper(){
static{
......
}
}
请告诉我这个static是什么?还有这个static的生命周期,什么时候开始执行这个static 展开
class SqlHelper(){
static{
......
}
}
请告诉我这个static是什么?还有这个static的生命周期,什么时候开始执行这个static 展开
6个回答
展开全部
这个叫static代码块,这个代码块里面的语句,比构造器里面的语句执行的还要早。和static变量同时被初始化,然后再去执行构造器里的语句。:
如果你new People();那么,执行顺序如下:
public class People{
static int peopleNum=0; //先执行这个
static {
.... //再执行这里面的语句
}
public People(){
...//最后执行构造器里的语句
}
}
综上,
一个类里面,所有标注了static修饰符的花括号代码块或变量,都会按照你的书写顺序,先后被初始化。是变量的,则初始化该变量;是语句块的,则执行该语句块。
JAVA里的static代码块就跟static变量一样,你可以把这个花括号语句块也当成一个变量,他的生命周期和static变量一样长。
如果你new People();那么,执行顺序如下:
public class People{
static int peopleNum=0; //先执行这个
static {
.... //再执行这里面的语句
}
public People(){
...//最后执行构造器里的语句
}
}
综上,
一个类里面,所有标注了static修饰符的花括号代码块或变量,都会按照你的书写顺序,先后被初始化。是变量的,则初始化该变量;是语句块的,则执行该语句块。
JAVA里的static代码块就跟static变量一样,你可以把这个花括号语句块也当成一个变量,他的生命周期和static变量一样长。
展开全部
系统第一次调用SqlHelper这个类的时候初始化,直到Jvm结束才死亡
当虚拟机第一次遇到SqlHelper的时候,会首先分配空间,并加载静态代码块,和初始化静态属性
然后再调用构造方法,并初始化对应属性(非静态属性)!!!
当虚拟机第一次遇到SqlHelper的时候,会首先分配空间,并加载静态代码块,和初始化静态属性
然后再调用构造方法,并初始化对应属性(非静态属性)!!!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
静态块 初始化JVM的时候就会加载静态块
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你好:
这是静态框 ,执行比构造还要早,你可以写个测试类,在静态框和构造方法里都去system.out很容易看出来~一般很少用得上~
希望能够帮到你
这是静态框 ,执行比构造还要早,你可以写个测试类,在静态框和构造方法里都去system.out很容易看出来~一般很少用得上~
希望能够帮到你
追问
因为我写的这个函数是 sql工具类,所以里面的变量 和 函数 全部是静态,保证不需要实例化就可以使用,是不是这样定义的话 构造函数就没有用,只能用static代替构造函数初始化?
static是在这个程序运行的时候就开始执行,
还是有其他类import的时候开始运行,
还是说第一次调用的时候运行?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是静态 代码块
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询