初始化块是和成员变量、成员函数一个级别的。一般用于类的初始化,也可执行其他java代码,作用和构造函数相同。

创建对象时,初始化块在构造函数之前执行。

初始化块分为普通初始化块、静态初始化块。

普通初始化块:
{
.........
}
创建对象时,在构造函数之前执行,没次创建对象时都会执行。

静态初始化块:
static{
........
}
执行优先级高于普通初始化块(在普通初始化块之前执行)。
和其它static成员一样,为类所有,只能访问static成员,但可以写其他java代码。
只在加载到内存时执行1次(只在创建第一个对象时执行),一般用于初始化类的成员(static)、类的公共资源。

一个类中可以有多个初始化块。对于多个普通的初始化块,先定义的优先级更高。

初始化块在javac编译时,原来的初始化块会消失,初始化块中的代码会被放在构造函数的函数体里的最前面。

创建对象时,会先初始化这个类的所有父类。

创建本类的第一个对象:
执行本类的初始化块,要先执行父类的初始化块,要先执行祖类的初始化块;
执行本类的构造函数,要先执行父类的构造函数,要先执行祖类的构造函数。

就是说最先调用祖类的静态初始化块,再调用父类的静态初始化块,再调用本身的静态初始化块;
再调用祖类的普通初始化块,再调用父类的普通初始化块,再调用自身的普通初始化块;
再调用祖类的构造函数,再调用父类的构造函数,再调用本身的构造函数。

示例:

 package my_package;

 public class Test {

     //普通初始化块。初始化块是和成员变量、成员方法一个级别的。创建对象时,在构造函数之前执行。每次创建对象时都会执行。
     {
         System.out.println("普通初始化块正在执行中");
     }

     //静态初始化块。静态初始化块执行优先级高于普通初始化块,但属于类所有,只会执行一次(只在创建第一个对象时执行)
     static{
         System.out.println("静态初始化块正在执行中");
     }

     //成员变量
     private String str="hello";

     //构造函数
     public  Test(){
         System.out.println("构造函数正在执行中");
     }

     //成员方法
     public void out(){
         System.out.println("正在执行成员方法");
     }

     public static void main(String[] args) {
         new Test();
         new Test();
     }

 }

Java 初始化块的更多相关文章

  1. Java初始化块

    1.使用初始化块 [修饰符]{ //初始化块的可执行性代码 } 初始化块虽然也是Java类的一种成员,但它没有名字,也就没有标识,因此无法通过类.对象来调用初始化块.初始化块只在创建Java对象时隐式 ...

  2. java初始化块执行顺序

    java中初始化块的执行顺序在构造器之前,多个初始化块之间定义在前的先执行.如下: public class InitialBlockTest { // The first one { System. ...

  3. Java初始化块的作用

    1.使代码更简洁 eg: public class Test { private void init() { System.out.println("初始化状态"); } publ ...

  4. Java初始化块及执行顺序

    理解 初始化块又称为代码块.属于类中的第四大成员.本质上是一个方法,它也有方法体,但没有方法名,没有参数,没有返回,而且也不是通过对象或类名显式调用,而是通过隐式调用 是构造器的补充 语法 [修饰符] ...

  5. Java的初始化块及执行过程详解

    问题:Java对象初始化方式主要有哪几种?分别是什么?针对上面的问题,想必大家脑海中首先浮现出的答案是构造器,没错,构造器是Java中常用的对象初始化方式. 还有一种与构造器作用非常相似的是初始化块, ...

  6. Java的初始化块、静态初始化块、构造函数的执行顺序及用途探究

    Java与C++有一个不同之处在于,Java不但有构造函数,还有一个”初始化块“(Initialization Block)的概念.下面探究一下它的执行顺序与可能的用途. 执行顺序 首先定义A, B, ...

  7. java类的初始化块/执行顺序,实例化对象数据赋值

    java里初始化一个类的对象,通过初始化快或者构造方法进行数据赋值.与其相关的执行代码有这么几种: 静态初始化块 初始化块 构造方法 静态初始化块 静态初始化块只在类加载时执行一次,同时静态初始化块只 ...

  8. 什么是Java实例初始化块

    在本篇文章,我将会使用一个例子展示什么是实例变量初始化块,实例初始化块和静态初始化块,然后说明在Java中实例初始化块是如何工作的. 执行顺序 查看下面的代码,你知道哪个先执行吗? package s ...

  9. Java 中的 static 使用之静态初始化块

    Java 中可以通过初始化块进行数据赋值.如: 在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块.如果使用 static 修饰初始化块,就称为静态初始化块. 需要特别注意: ...

随机推荐

  1. eclispe: 修改所有文件默认编码为UTF-8

    1.修改 workspace text file encoding 依次点击windows -> Preferences -> general -> Workspace,修改如图的编 ...

  2. C语言 宏定义之可变参数

    可变参数宏定义 C99编译器标准允许你可以定义可变参数宏(variadic macros),这样你就可以使用拥有可以变化的参数表的宏.可变参数宏就像下面这个样子: #define dbgprint(. ...

  3. C# 动态执行JS

    有时候需要,在程序中灵活的嵌入自定义的计算逻辑,使用C#加载JS脚本形式可以实现: // 添加引用 using Microsoft.JScript; string jsStr = "var ...

  4. IDEA强制清除Maven缓存

    目录 重新导入依赖的常见方式 存在的问题 彻底清除IDEA缓存的方式 重新导入依赖的常见方式 下面图中的刷新按钮,在我的机器上,并不能每次都正确导入pom.xml中写的依赖项,而是导入之前pom.xm ...

  5. PHP $$符号的作用与使用方法

    php中$$符号的定义与作用 在PHP中单个美元符号变量($str),表示一个名为str的普通变量,它可以存储字符串.整数.数组.布尔等任何类型的值. 双美元符号的变量($$str):表示一个可变变量 ...

  6. mac环境更新node版本

    执行命令: 清除node的cache(清除node的缓存) sudo npm cache clean -f 安装"n"版本管理工具,管理node(没有错,就是n) sudo npm ...

  7. Nginx请求转发

    1.比如说我要将127.0.0.1/topics上的所有请求转发到xxx:xxx/上 修改 sudo vim /etc/nginx/nginx.conf server { listen 80; ser ...

  8. bat/cmd批处理程序设计教程

    序言 这是一篇技术教程,我真心诚意会用很简单的文字表达清楚自己的意思,只要你识字就能看懂,就能学到知识.我写这篇教程的目的,是让每一个看过这些文字的朋友记住一句话:如果爱可以让事情变的更简单,那么就让 ...

  9. setup_function和teardown_function

    setup_function和teardown_function 所有用例开始和所有用例结束只调用一次

  10. Mac AXURE9 汉化

    1.下载汉化文件 https://pan.baidu.com/s/1qE0ZSvf210WLMfvi8RlMpg 2.把lang文件放在Resources文件夹下 3.重新打开Axure就ok了