
代码块使⽤ {} 定义的⼀段代码称为代码块。根据代码块定义的位置以及关键字⼜可分为以下四种1. 普通代码块2. 构造块有的书上叫实例代码块3. 静态块4. 同步代码块public class Student{ private String name; private String gender; private int age; private double score; private static String classRoom; // 实例代码块 { this.name bit; this.age 12; this.gender man; System.out.println(I am instance init()!); } // 静态代码块 static { classRoom bit306; System.out.println(I am static init()!); } public Student(){ System.out.println(I am Student init()!); } public static void main(String[] args) { Student s1 new Student(); Student s2 new Student(); } }注意1.静态代码块不管⽣成多少个对象其只会执⾏⼀次2. 静态成员变量是类的属性因此是在JVM加载类时开辟空间并初始化的3.如果⼀个类中包含多个静态代码块在编译代码时编译器会按照定义的先后次序依次执⾏(合并)4.实例代码块只有在创建对象时才会执⾏代码块与构造方法的执行顺序1.父类的静态代码块2.子类的静态代码块3.父类的实例代码块4.父类的构造方法5.父类的实例代码块6.父类的构造方法内部类当⼀个事物的内部还有⼀个部分需要⼀个完整的结构进⾏描述⽽这个内部的完整的结构⼜只为外 部事物提供服务那么这个内部的完整结构最好使⽤内部类。在Java中可以将⼀个类定义在另⼀个 类或者⼀个⽅法的内部前者称为内部类后者称为外部类。内部类也是封装的⼀种体现。内部类的分类1. 成员内部类(普通内部类未被static修饰的成员内部类和静态内部类被static修饰的成员内部类)2. 局部内部类(不谈修饰符)、匿名内部类 注意内部类其实⽇常开发中使⽤并不是⾮常多⼤家在看⼀些库中的代码时候可能会遇到的⽐较 多⽇常开始中使⽤最多的是匿名内部类。public class OutClass { // 成员位置定义未被static修饰 ---实例内部类 public class InnerClass1{ } // 成员位置定义被static修饰--- 静态内部类 //用来创建节点 static class InnerClass2{ } public void method(){ // ⽅法中也可以定义内部类--- 局部内部类⼏乎不⽤ class InnerClass5{ } } }1. 外部类中的任何成员都可以在实例内部类⽅法中直接访问2. 实例内部类所处的位置与外部类成员位置相同因此也受public、private等访问限定符的约束3. 在实例内部类⽅法中访问同名的成员时优先访问⾃⼰的如果要访问外部类同名的成员必须 外部类名称.this.同名成员来访问4. 实例内部类对象必须在先有外部类对象前提下才能创建5. 实例内部类的⾮静态⽅法中包含了⼀个指向外部类对象的引⽤6. 外部类中不能直接访问实例内部类中的成员如果要访问必须先要创建内部类的对象。