Java中普通代码块、构造代码块和静态代码块的区别
执行顺序:(优先级由高到低)静态代码块>main方法>构造代码块>构造方法;
1.普通代码块
package org.west.demo5;
public class lianxi {
public static void main(String[] args) {
//普通代码块:在方法或语句中出现{}就称为普通代码块。
//普通代码块和一般语句执行顺序由他们在代码中的先后顺序决定---先出现先执行
{
int a = 3;
System.out.println("普通代码块内的变量a=" + a);
}
int b = 4;
System.out.println("主方法中的变量b=" + b);
{
int c = 6;
System.out.println("普通代码块内的变量c=" + c);
}
}
}
/* 运行结果为:
普通代码块内的变量a=3
主方法中的变量b=4
普通代码块内的变量c=6
*/
2.构造代码块
package org.west.demo5;
public class lianxi2 {
//构造块:直接定义在类中定义且没有加static关键字的代码块称为{}构造代码块。
// 构造代码块每次在创建对象时被调用,并且构造代码块执行的优先级高于构造方法。
{
System.out.println("第一构造代码块");
}
public lianxi2(){
System.out.println("构造方法");
}
{
System.out.println("第二构造代码块");
}
public static void main(String[] args) {
new lianxi2();
new lianxi2();
}
}
/* 运行结果:
第一构造代码块
第二构造代码块
构造方法
第一构造代码块
第二构造代码块
构造方法
*/
静态代码块之随着类的加载执行一次,而构造代码块会随着对象的创建而运行。
3.静态代码块
package org.west.demo5;
public class lianxi3 {
// 静态代码块:在java中使用关键字 static所修饰的代码块。
// 静态代码块属于类,为类的属性初始化。
// 每个静态代码块只执行一次。由于JVM再加载类时会执行静态代码块,所以静态代码块优先于主方法执行
// 如果类中有多个静态代码块,按照定义的先后顺序来执行。
// 注意事项:静态代码块不能存在于任何方法中,并且静态代码块不能直接访问实例变量和实例方法,需要通过对象来访问
{
System.out.println("test的构造代码块");
}
static{
System.out.println("test的静态代码块");
}
public lianxi3(){
System.out.println("lianxi3的构造方法");
}
public static void main(String[] args) {
System.out.println("lianxi3的主方法");
new lianxi3();
new lianxi3();
}
}
/*运行结果:
test的静态代码块
lianxi3的主方法
test的构造代码块
lianxi3的构造方法
test的构造代码块
lianxi3的构造方法*/