ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java SE 代码块

2022-09-10 22:33:23  阅读:167  来源: 互联网

标签:调用 Java 静态 代码 普通 static 执行 SE


1、代码块

  1. 基本语法

    • [修饰符]{

      代码

      };

      1. 修饰符 可选,要写的话,也只能写 static
      2. 代码块分为两类,使用static修饰的叫静态代码块,没有static修饰的,叫普通代码块/非静态代码块
      3. ; 可以写,也可以不写
  2. 当我们不管调用哪个构造器创建对象,都会先调用代码块的内容。代码块调用的顺序优先于构造器

  3. static 代码块随着类的加载而执行,并且只会执行一次,如果是普通代码块,每创建一个对象,就执行

  4. 类什么时候被加载

    • 创建对象实例时(new)
    • 创建子类对象实例,父类也会被加载
    • 使用类的静态成员时(静态属性,静态方法)
  5. 普通代码块,在创建对象实例时,会被隐式调用,被创建一次,就会调用一次。

    如果只是使用类的静态成员时,普通代码快并不会执行

  6. 创建一个对象,在一个类 调用顺序是:

    1. 调用静态代码块和静态属性初始化(如果有多个,按它们定义的顺序执行)
    2. 调用普通代码块和普通属性的初始化(如果有多个,按它们定义的顺序执行)
    3. 调用构造方法
  7. 构造器 的最前面其实隐含了 super() 和 调用普通代码块

  8. 创建子类对象时,调用顺序如下:

    1. 父类的静态代码块和静态属性(优先级一样,按定义的顺序执行)
    2. 子类的静态代码块和静态属性(优先级一样,按定义的顺序执行)
    3. 父类的普通代码块和普通属性初始化(优先级一样,按定义的顺序执行)
    4. 父类的构造方法
    5. 子类的普通代码块和普通属性初始化(优先级一样,按定义的顺序执行)
    6. 子类的构造方法
  9. 静态代码块只能直接调用静态成员(静态属性和静态方法),普通代码块可以调用任意成员

  10. 实例

private static int n1 = getN1();//这个就叫静态属性初始化

public static int getN1(){
    return 99;
}


public class Demo03 {
    public static void main(String[] args) {
        System.out.println(Person1.total);
        System.out.println(Person1.total);

    }
}

class Person1{
    public static int total;
    static{
        total = 100;
        System.out.println("执行了!");
    }
}
/*
	执行结果:
        执行了!
        100
        100
*/

//先完成类加载后再执行main方法中的语句

标签:调用,Java,静态,代码,普通,static,执行,SE
来源: https://www.cnblogs.com/muzhe777/p/16678900.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有