Java的静态块和初始化块分别何时执行?有什么区别?静态初始化块java代码块状化:当类第一次加载时执行 。
非静态初始化块java代码块状化:非静态初始化块会在构造函数执行时java代码块状化,且在构造函数主体代码执行之前被执行 。
区别如下:
1、执行次数不同
静态块只执行一次,初始化块可以执行多次 。
2、作用不同
静态初始化块仅能初始化类变量 , 即static修饰java代码块状化的数据成员 。
非静态初始化块可以初始化类java代码块状化的实例变量 。
扩展资料:
使用Java静态代码块注意事项:
1、它是随着类的加载而执行,只执行一次,并优先于主函数 。具体说,静态代码块是由类调用的 。类调用时,先执行静态代码块,然后才执行主函数的 。
2、静态代码块其实就是给类初始化的 , 而构造代码块是给对象初始化的 。
3、静态代码块中的变量是局部变量,与普通函数中的局部变量性质没有区别 。
4、一个类中可以有多个静态代码块 。
5、对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)(变量、初始化块)构造器 。
java中的静态代码块、代码块、构造器的执行顺序是怎样呢,这三者有什么作用呢先说执行顺序java代码块状化:java代码块状化我们在new一个对象时java代码块状化,如果类还没加载,就需要先将类加载到内存,此时就会执行静态代码块,在创建对象时,是先执行代码块,然后执行构造器 。所以静态代码块、代码块、构造器java代码块状化的执行顺序是java代码块状化:静态代码块→代码块→构造器 。
【java代码块状化 java 代码块】再说作用:静态代码块是用于初始化类的(在加载类时执行,只执行一次) , 代码块是用于初始化对象的(在创建对象时执行 , 每次创建对象时都执行),构造器是用于创建对象的 。
java构造代码块的作用//构造块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块 。构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数 。
public class CodeBlock02
{
{
System.out.println("第一代码块");
}
public CodeBlock02(){
System.out.println("构造方法");
}
{
System.out.println("第二构造块");
}
public static void main(String[] args){
new CodeBlock02();
new CodeBlock02();
new CodeBlock02();
}
}
/**
执行结果:
第一代码块
第二构造块
构造方法
第一代码块
第二构造块
构造方法
第一代码块
第二构造块
构造方法*/
Java常见代码块的作用与区别1. 局部代码块
作用在方法当中,作用是控制变量的生命周期:
public void show(){
{
System.out.println("局部代码块运行!");
}
}123456
在程序中当我们定义完成一个局部变量x之后,并且在接下来的代码中,不想再用到它时,那么就没必要让x在内存中继续占用空间 。因此就有了局部代码块 。
2. 构造代码块
作用在类的定义Body中 , 作用是给类的部分字段统一初始化:
public class Apple {
private String size;
//构造代码块
{
System.out.println("构造代码块运行!");
size = "E";
}
}
12345678910
构造代码块与构造函数的区别是:构造代码块是给所有对象进行统一初始化 , 而构造函数是给对应的对象初始化,因为构造函数是可以多个的,运行哪个构造函数就会建立什么样的对象,但无论建立哪个对象 , 都会先执行相同的构造代码块 。也就是说,构造代码块中定义的是不同对象共性的初始化内容 。所以理所当然的,构造代码块在构造函数之前执行 。
3. 静态代码块
作用有两个:
(1)给类的静态变量赋值;
(2)声明静态变量;
作用在类的Body中,对类中的静态变量初始化:
public class APP {
static int x, y; // 静态变量
static {
x = 5; // 给静态变量x赋值
}
public static void myMethod() {
y = xx; // x先使用x的值再加1;x先加1再使用x的值
}
public static void main(String[] args) {
x--;
myMethod();
System.out.println(xyx);
}
}
输出:23
关于java代码块状化和java 代码块的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- asp.net的登录页面设计,aspnet登录界面设计
- gis需要什么数学基础的教材,gis软件难学吗
- 宇宙视频下载,宇宙视频官网
- java代码如何生成安卓 java编写安卓
- php数据库集成环境,php与mysql集成
- 游戏模拟器如何选择双人,手机模拟器怎么双人玩
- 河南华为服务器虚拟化定做,华为虚拟化平台搭建
- php获取后台返回数据 php获取接口返回值
- 如何利用新媒体开展交通安全宣传,怎样做好交通宣传工作