java静态代码块注意点 静态代码块和构造方法执行顺序
关于java静态代码块的详细运行过程问题
废话,静态块先执行,类加载的时候就执行,一个类要想运行,首先被Java虚拟机将class文件内部字节码指令读取至内存并且包装成一个Class类型的对象,这个过程称为类加载,Class类的一个对象是对某一个类的一个描述!
成都创新互联公司是专业的静海网站建设公司,静海接单;提供成都网站建设、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行静海网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
不是说运行到Chinese.sing();时输出了static code,Chinese.sing();是什么?是方法调用,Chinese是类,sing是该类的静态方法,你要想调用sing方法,首先第一步就是类加载,类都没加载,Java虚拟机都不认识他,运行个屁呀!
所以第一步是类加载,注意!static块,也就是静态块,在类加载的时候就执行了,而且只执行一次,因为不可能进行第二次类加载,从这个意义上说,静态的成员是第一时间执行的,然后才轮到别人!
java中详解静态代码块,构造代码块,构造方法。求简单易懂的解释
静态代码块:只要一用到某个类,那么这个类的静态代码块就先执行,比如:
public class Dog(){
int i = 0;
static {
i = 1;
}
public Dog(){
i = 2;
}
}当你new 一个Dog()对象时,首先i=
1 会执行,然后才执行
public Dog(){}这个方法。
pulic
Dog() 是与类同名、没有返回值的方法,也就是构造方法。
构造方法的作用是用来初始化一个对象的。比如你可以在里面写
i
=
2;
那么当你 Dog
d
=
new
Dog()执行这段代码的时候,是这样的:
首先
i
=
;
然后执行static 静态代码块,此时i=
1;
最后执行public
Dog();
i
=
2;
java中,什么时候要用到静态语句块,它有何作用呢?
一 般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情 况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用
比如main方法就必须是静态的 这是程序入口
两者的区别就是:静态代码块是自动执行的;
静态方法是被调用的时候才执行的.
静态方法
(1)在Java里,可以定义一个不需要创建对象的方法,这种方法就是静态方法。要实现这样的效果,只需要在类中定义的方法前加上static关键字。例如:
public static int maximum(int n1,int n2)
使用类的静态方法时,注意:
a在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。
b 静态方法不能以任何方式引用this和super关键字,因为静态方法在使用前不用创建任何实例对象,当静态方法调用时,this所引用的对象根本没有产生。
(2)静态变量是属于整个类的变量而不是属于某个对象的。注意不能把任何方法体内的变量声明为静态,例如:
fun()
{
static int i=0;//非法。
}
(3)一个类可以使用不包含在任何方法体中的静态代码块,当类被载入时,静态代码块被执行,且只被执行一次,静态块常用来执行类属性的初始化。例如:
static
{
}
java 静态代码块 静态方法
静态代码块:有些代码必须在项目启动的时候就执行,这种代码是主动执行的(当类被载入时,静态代码块被执行,且只被执行一次,静态块常用来执行类属性的初始化)
静态方法:需要在项目启动的时候就初始化,在不创建对象的情况下,这种代码是被动执行的(静态方法在类加载的时候就已经加载
可以用类名直接调用)。
两者的区别是:静态代码块是自动执行的,
静态方法是被调用的时候才执行的.
本文标题:java静态代码块注意点 静态代码块和构造方法执行顺序
文章链接:http://scyanting.com/article/doededh.html