当前位置: 首页 > news >正文

java中的初始化块

public class Person
{
   int a=6;//声明实例变量制定默认值,也可以认为是对象的初始化代码,执行顺序与源代码中的排列顺序相同 {   System.out.println("Person初始化块"); }
  {
    a=9;
    if(1)
    {     System.out.println("Person第二个初始化块");
    } }

  public Person()
  {
    System.out.println("Person无参构造器");  
  }
  public static void main(String[] args)
  {
    new Person();
    System.out.println(new Person().a);//a=9

  }
}

程序运行结果:

Person初始化块
Person第二个初始化块
Person无参构造器

从结果可以看出,当创建java对象时,系统总是先调用该类的初始化块。如果一个类中有多个普通初始化块,按定义的先后顺序执行。

:初始化块总是在构造器之前执行。

 

静态初始化块:用static修饰,又叫类初始化块。初始化块只能用static修饰。

与普通初始化块(没有修饰符修饰)的区别是:

  普通初始化块负责对对象初始化;

  静态初始化块负责对类进行初始化。它通常对类变量执行初始化处理,不能对实例变量进行初始化处理。

系统将在类初始化阶段执行静态初始化块,而不是在创建对象时才执行(这时执行普通初始化块)。因此静态初始化块总比普通初始化块先执行。

 

  系统在类初始化阶段执行静态初始化块时,首先一直追溯到java.lang.Object类(如果包含静态初始化块),限制性java.lang.Object类的静态初始化快(如果有),然后执行父类的静态初始化快……最后执行该类的静态初始化块,经过这个过程才完成类的初始化。普通初始化块也类似。

 

相关文章:

  • 2010-12月资源
  • SQL Server 2008 R2 性能计数器详细列表(四)
  • 轻松学习Linux之如何创建可执行脚本
  • 轻松学习Linux之本地安装系统
  • 记录一个未知的问题
  • 金额大小写转换(1)
  • LaPlayer(1)------Service浅析
  • bouml简介与使用总结
  • Oracle的隐式转换
  • 在同一个页面父窗口打开子窗口,动态无刷新提交,超炫基于jquery ajax提交,兼容IE7+,火狐.....
  • PHP统计目录下的文件总数及代码行数(去除注释及空行)
  • nyoj 523 双向广搜
  • JS调用后台方法大全
  • 即时通信3
  • frame-relay实验
  • 网络传输文件的问题
  • fetch 从初识到应用
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Java 网络编程(2):UDP 的使用
  • leetcode讲解--894. All Possible Full Binary Trees
  • Making An Indicator With Pure CSS
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • PAT A1017 优先队列
  • windows下如何用phpstorm同步测试服务器
  • 分享几个不错的工具
  • 基于 Babel 的 npm 包最小化设置
  • 技术发展面试
  • 如何设计一个微型分布式架构?
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​MySQL主从复制一致性检测
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (floyd+补集) poj 3275
  • (定时器/计数器)中断系统(详解与使用)
  • (二)Linux——Linux常用指令
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)项目管理杂谈-我所期望的新人
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .jks文件(JAVA KeyStore)
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .netcore如何运行环境安装到Linux服务器
  • .NET分布式缓存Memcached从入门到实战
  • .net流程开发平台的一些难点(1)
  • .net实现客户区延伸至至非客户区
  • @JSONField或@JsonProperty注解使用
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ NOI 2001 ] 食物链
  • [2010-8-30]
  • [AHOI2009]中国象棋 DP,递推,组合数