page contents

Java实例教程——详解Java 实例初始化

本文讲述了Java实例教程——详解Java 实例初始化!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

attachments-2023-06-jFFwaC9264812e6a41835.png本文讲述了Java实例教程——详解Java 实例初始化!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

Instance Initializer block用于初始化实例数据成员。它在每次创建类的对象时运行。

实例变量的初始化可以直接完成,但在实例初始化块中初始化实例变量时可以执行额外的操作。

Que)当我们可以直接在实例数据成员中赋值时,实例初始化块的用途是什么?例如:

class Bike{  

    int speed=100;  

}

# 为什么要使用实例初始化块?

假设我必须在为实例数据成员赋值时执行一些操作,例如用于填充复杂数组的 for 循环或错误处理等。

实例初始化块的示例

让我们看一下执行初始化的实例初始化程序块的简单示例。

class Bike7{  

    int speed;  

    Bike7(){System.out.println("速度是"+speed);}  

    {speed=100;}  

    public static void main(String args[]){  

    Bike7 b1=new Bike7();  

    Bike7 b2=new Bike7();  

    }      

}

输出:

速度是100

速度是100

java中可以在三个地方进行操作:方法constructor堵塞

# 首先调用什么,实例初始化块或构造函数?

class Bike8{  

    int speed;  

    Bike8(){System.out.println("构造函数被调用");}  

    {System.out.println("实例初始化块被调用");}  

    public static void main(String args[]){  

    Bike8 b1=new Bike8();  

    Bike8 b2=new Bike8();  

    }      

}

输出:

实例初始化块被调用

构造函数被调用

构造函数被调用

在上面的示例中,似乎首先调用了实例初始化程序块,但没有。实例初始化块在对象创建时被调用。Java 编译器在构造函数中的第一个语句 super() 之后复制实例初始化块。所以首先,构造函数被调用。关注公众号Java面试那些事儿,获取651页Java面试题,让我们通过下图来理解它:

注意:java 编译器在每个构造函数中复制实例初始化块的代码。

# 实例初始化块的规则:

实例初始化块主要有三个规则。它们如下:

实例初始化块是在创建类的实例时创建的。

在调用父类构造函数之后(即在 super() 构造函数调用之后)调用实例初始化块。

实例初始化块按照它们出现的顺序出现。

# 在 super() 之后调用的实例初始化程序块的程序

class A{  

A(){  

System.out.println("调用父类构造函数");  

}  

}  

class B2 extends A{  

B2(){  

super();  

System.out.println("调用子类构造函数");  

}  

{System.out.println("实例初始化块被调用");}  

public static void main(String args[]){  

B2 b=new B2();  

}  

}

输出:

调用父类构造函数

实例初始化块被调用

调用子类构造函数

# 实例块的另一个例子

class A{  A(){  

System.out.println("调用父类构造函数");  

}  

}  

class B3 extends A{  

B3(){  

super();  

System.out.println("调用子类构造函数");  

}  

B3(int a){  

super();  

System.out.println("调用子类构造器"+a);  

}  

{System.out.println("实例初始化块被调用");}  

public static void main(String args[]){  

B3 b1=new B3();  

B3 b2=new B3(10);  

}  

}

输出:

父类构造函数被调用

实例初始化块被调用

子类构造函数被调用

父类构造函数被调用

实例初始化块被调用

调用子类构造函数 10

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

想高效系统的学习Java编程语言,推荐大家关注一个微信公众号:Java圈子。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Java入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2023-03-2AoKIjPQ64014b4ad30a3.jpg

  • 发表于 2023-06-08 09:27
  • 阅读 ( 164 )
  • 分类:Java开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1470 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章