跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方


KaiWn

推荐的帖子

 

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方法中的语句

 

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...