初始化块是和成员变量、成员函数一个级别的。一般用于类的初始化,也可执行其他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. h5 唤起app或跳转appStore

    //唤起app通过唤端媒介(URL Scheme)   //微信浏览器自6.3.x版本起禁用了大多数Scheme跳转功能,扫一扫目前可用   // URL 的组成:   // [scheme:][// ...

  2. SNF-软件开发机器人-免费-火爆登场-程序下载及实战配套教程免费发放

    软件开发机器人不辱使命的完成了在软件开发方面的方式方法,颠覆了传统开发,可零编程开发软件,也可二开更强大功能. 为了更好的了解和理解软件开发机器人我们以模拟用友u8系统部分供应链程序为例进行模拟. 联 ...

  3. Java地址:

    GitHub:https://github.com/nanchen2251 个人博客:https://nanchen2251.github.io/ 简书地址:http://www.jianshu.co ...

  4. New & make in go_Code

    概述 Go 语言中的 new 和 make 一直是新手比较容易混淆的东西,咋一看很相似.不过解释两者之间的不同也非常容易. 他们所做的事情,和应用的类型也不相同. 二者都是用来分配空间. new 函数 ...

  5. /bin/sh^M:解释器错误:没有那个文件或目录

    在win下编辑的时候,换行结尾是\n\r , 而在linux下 是\n,所以才会有 多出来的\rsed -i 's/\r$//' configure 删除configure脚本中的\r

  6. leetcode No.242 有效的字母异位词 valid-anagram (Python3实现)

    题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram&q ...

  7. 爬虫相关-scrapy框架介绍

    性能相关-进程.线程.协程 在编写爬虫时,性能的消耗主要在IO请求中,当单进程单线程模式下请求URL时必然会引起等待,从而使得请求整体变慢. 串行执行 import requests def fetc ...

  8. 使用自定义注解和AOP管理shiro权限

    一.场景 在使用shiro框架的时候,遇到了这样的需求:本系统有多个用户,每个用户分配不同角色,每个角色的权限也不一致.比如A用户拥有新闻列表的增删改查权限,而B用户只有查看新闻列表的权限,而没有删除 ...

  9. Java之数组类型

    如果我们有一组类型相同的变量.例如,5位同学的成绩,可以这么写 public class Main { public static void main(String[] args) { // 5位同学 ...

  10. python获取https并且写文件日志

    # -*- coding: utf-8 -*- import os import os.path import shutil import chardet import urllib.request ...