1.初始化块的作用:对java对象进行初始化;

2.程序的执行顺序:声明成员变量的默认值-->显示初始化,多个初始化块依次被执行(同级别下按先后顺序执行)-->构造器在对成员进行赋值操作。

public class Person extends Object{
String name;
public Person() {
this.name = "tom";
System.out.println("执行的是构造方法");
}
{
System.out.println("执行的是非静态代码块");
}
}
public class Main {

    public static void main(String[] args) {
Person p = new Person();
}
}

输出:

执行的是非静态代码块1

执行的是非静态代码块2

执行的是构造方法

3.静态代码块:当类在被载入时,类属性的声明和静态代码快先后顺序被执行,且只被执行一次;静态代码块里面只能用static修饰的属性和方法;

package insof;

public class Person extends Object{
String name;
static int age;
public Person() {
this.name = "tom";
System.out.println("执行的是构造方法");
}
{
System.out.println("执行的是非静态代码块1");
}
{
System.out.println("执行的是非静态代码块2");
}
static{
age = 11;
System.out.println("执行的是静态代码块1");
showAge();
}
static{
System.out.println("执行的是静态代码块2");
}
public static void showAge() {
System.out.println(age);
}
}
package insof;

public class Main {

    public static void main(String[] args) {
Person p = new Person();
Person p1 = new Person();
}
}

输出:

执行的是静态代码块1
11
执行的是静态代码块2
执行的是非静态代码块1
执行的是非静态代码块2
执行的是构造方法
执行的是非静态代码块1
执行的是非静态代码块2
执行的是构造方法

说明:每次new一个对象,给静态代码块都要被执行,而静态代码块只执行一次。

非静态代码块:

  • 可以有输出语句;
  • 可以对类的属性声明进行初始化操作;
  • 可以调用静态和非静态的属性和方法;
  • 若有多个非静态的代码块,那么按照从上到下的顺序一次执行;
  • 每次创建对象的时候,都只会执行一次,且优先于构造方法;

静态代码块:用static修饰的代码块

  • 可以有输出语句;
  • 可以对类的属性声明进行初始化操作;
  • 不可以对非静态的属性初始化,即:不可以调用非静态的属性和方法;
  • 静态代码块的执行顺序优先于非静态代码块;
  • 静态代码块只执行一次;

jvaa之初始化块的更多相关文章

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

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

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

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

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

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

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

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

  5. static声明初始化块的一下注意事项

    通过输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法.由于静态初始化块只在类加载时执行一次,所以当再次创建对象 hello2 时并未执行静态初始化块.

  6. java中的静态初始化块

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

  7. static静态初始化块

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

  8. linkin大话面向对象--初始化块

    java使用构造器来对单个对象进行初始化操作,使用构造器先完成整个java对象的状态初始化,然后将java对象返回给程序,从而让整个java对象的信息更加完整.与构造器作用非常类似的是初始化块,它也可 ...

  9. Class.forName()+Class.forName().newlnstance()和new语句和初始化块+static初始化块+构造方法之间的关系

    先上代码 class A{     int a;     static {System.out.println("载入类时执行");}     public A() {       ...

随机推荐

  1. 解决div用了position: fixed后滚动条显示不完整的问题

    由于div运用了position:fixed,内部通讯列表设置了height:100%,然而列表设置overflow:overlay 溢出部分显示不全,且无滚动条出现,最终找出原因在于顶部header ...

  2. oc实现小型学生管理系统

                              首先,创建一个工程,然后加入两个cocoaclass,分别命名为Student   和 StudentSystem.   然后就可以开始写代码喽   ...

  3. flutter学习之环境配置

    1.Android SDK通常目录: 用户->用户名->AppData->Local=>Android->Sdk 2.不知道的情况下,打开Android Studio,然 ...

  4. poj 1077 Eight (八数码问题——A*+cantor展开+奇偶剪枝)

    题目来源: http://poj.org/problem?id=1077 题目大意: 给你一个由1到8和x组成的3*3矩阵,x每次可以上下左右四个方向交换.求一条路径,得到12345678x这样的矩阵 ...

  5. SQL- SQL插入与更新删除

    一 前言 经过之前的 [SQL]-SQL介绍, [SQL]- SQL检索阶段一, [SQL]-sql检索阶段二 的三篇文章你已经学会的sql的相关概念和如何查询数据库,这篇文章主要后续对数据库表的进入 ...

  6. 第三次作业-Python网络爬虫与信息提取

    1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业 过程. 5.写一篇不少于100 ...

  7. AI行业精选日报_人工智能(12·20)

    IDC:中国智能家居市场2020年十大预测 12 月 20 日消息,「IDC 咨询」官方公众号发布「中国智能家居 2020 年十大预测」.具体内容如下:互联平台加速整合.语音助手广泛赋能.智能电视显著 ...

  8. Linux远程目录挂载

    原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等问题,可查看当前链接:https://app.yinxiang.com/shard/s17/nl/19391737/ad99ab1d-1 ...

  9. C# get md5,renamed file and can not change file's md5

    using System; using System.Text; using System.IO; using System.Security.Cryptography; namespace Cons ...

  10. Android 警告对话框 AlertDialog

    @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); s ...