欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

010.day010

程序员文章站 2024-01-19 08:13:52
...

day10笔记

一、Eclipse目录结构

1. 项目文件夹

创建工程后产生的文件夹,包含配置文件以及相关的核心目录

2. 源码文件夹

source类型的目录,可以存在多个,新建工程时,默认会创建src目录

  • 只有源码文件夹下的文件才会被识别为代码文件
  • 当文件修改后被保存时会自动编译

3. 字节码文件夹

默认会将编译后的class文件按照对应的源码路径存放在工程路径下的bin目录

二、反编译工具

1. jd-gui.exe

2. class打开方式

右键class文件->打开方式->选择更多/浏览->找到jd-gui.exe放置位置->选中->打开->jd-gui.exe会出现在打开方式的列表中->勾选class文件均以此方式打开

三、内部类

在class声明的内部定义的类结构

1. 成员内部类

定义位置与外部类的成员平级

  • 需要借助外部类的实例进行实例化
  • 内部类可以直接访问到外部类的成员
  • 出现同名时可以借助:外部类.this.成员的方式访问外部类的成员
  • 反编译产生的this$0为外部类对象的指代

2. 局部内部类

定义地点与局部变量相同

  • 可以出现在方法或代码块中
  • 只能在定义位置手动实例化使用
  • 定义时不需要指定权限修饰符

3. 静态内部类

使用static修饰的局部内部类

  • 不需要借助外部对象的实例来实例化
  • 静态内部类只能直接访问外部类的静态成员
  • 出现同名冲突时可以使用:外部类名.成员的方式区分

4. 匿名内部类

以已经定义的抽象类或接口作为模板,使用new关键字,重新补全定义其中的描述信息

  • 特殊的局部内部类,无需使用class关键字声明
  • 可以将整个结构看做是一个类的实例
  • 可以作为参数传递
    public void test(Teach teach) {
        teach.exam();
        teach.review();
    }

    public static void main(String[] args) {
        Outer outer = new Outer();
        // 匿名内部类可以当做参数进行传递
        // 以匿名内部类当中的定义实例化的对象
        outer.test(new Teach() {
            
            @Override
            public void review() {
                System.out.println("课前复习");
            }
            
            @Override
            public void exam() {
                System.out.println("随堂练习");
            }
        });
    }

四、对象的实例化

1. 静态代码块

一个相对独立的区域,会最先被加载

2. 动态代码块

编译后会出现在构造方法开头的部分,先于构造器原内容执行

3. 构造方法

对象实例化时调用的方法,会将某些引用类型的成员变量的初始化语句一同执行

4. 成员变量

编译后会将在类中定义的成员变量进行整理,对于有赋值操作的引用类型,赋值语句将在构造器的开头出现

推荐阅读