当然可以!下面是适合“【Java 基础问题 第二篇】”的内容结构和详细讲解,定位为 新手进阶篇,建议延续第一篇基础语法之后,从面向对象、内存机制与常用类库展开。


【Java 基础问题 第二篇】

面向对象、内存模型与常用类进阶解析


📚 目录

  1. 什么是构造方法?构造方法和普通方法的区别?
  2. Java 中对象的创建与销毁过程是怎样的?
  3. 什么是方法重载(Overloading)与重写(Overriding)?
  4. Java 中的 this 和 super 有什么区别?
  5. Java 的类加载机制是怎样的?
  6. Java 的内存模型(JVM内存划分)
  7. Java 中的包装类(Wrapper Class)与自动拆装箱
  8. 字符串常量池与 == 与 .equals() 的区别
  9. Java 中的 final、static、transient、volatile 各是什么?
  10. Java 中常见异常及其继承关系图

1. 什么是构造方法?构造方法和普通方法的区别?

构造方法(Constructor) 用于在创建对象时初始化对象状态,名称与类名相同,无返回值。

class Person {
    String name;
    Person(String n) {
        name = n;
    }
}
特性构造方法普通方法
名称与类名相同任意合法名称
返回类型无(不能写 void)有返回类型
调用时机创建对象时自动调用显式调用

2. Java 中对象的创建与销毁过程是怎样的?

创建过程:

  1. 类加载 → 分配内存 → 零值初始化
  2. 执行构造器代码
  3. 返回对象引用

销毁过程:

Java 使用 垃圾回收机制(GC) 自动管理内存:

  • 当对象无引用指向时,就可能被 GC。
  • 不推荐重写 finalize(),已在 Java 9 弃用。

3. 方法重载 vs 重写

比较点重载(Overload)重写(Override)
定义位置同一个类子类与父类之间
参数列表必须不同必须相同
返回类型可以不同必须相同或子类
访问权限无要求子类不能降低访问级别
关键字可选 @Override 注解

4. this 与 super 的区别?

关键字作用
this指当前类的对象、成员
super指父类的对象、成员
class Parent { void hello() { System.out.println("Parent"); } }
class Child extends Parent {
    void hello() {
        super.hello();     // 调用父类方法
        System.out.println("Child");
    }
}

5. 类加载机制:加载 -> 验证 -> 准备 -> 解析 -> 初始化

Java 的类加载器体系包括:

  • Bootstrap ClassLoader:加载 JDK 核心类
  • Extension ClassLoader:加载扩展类库
  • Application ClassLoader:加载用户代码

可通过 Class.forName() 动态加载类。


6. JVM 内存结构

区域作用
程序计数器当前线程执行字节码的位置指针
Java 虚拟机栈方法调用的局部变量表、栈帧
本地方法栈调用 native 方法
堆(Heap)所有对象分配的主要区域
方法区存储类信息、静态变量、常量池等
元空间(Java 8)替代方法区,使用本地内存

7. 包装类与自动拆装箱

Java 提供 8 种基本类型对应的包装类:

基本类型包装类
intInteger
booleanBoolean
charCharacter
Integer a = 10;      // 自动装箱
int b = a;           // 自动拆箱

8. String:== vs equals 与常量池

String a = "hello";
String b = "hello";
String c = new String("hello");
  • a == b:true(常量池复用)
  • a == c:false(新对象)
  • a.equals(c):true(值相等)

结论:比较字符串内容请用 .equals()


9. final / static / transient / volatile

关键字含义
final表示常量/不可继承/不可重写/不可修改
static表示静态变量/方法,属于类不属于对象
transient用于序列化时,表示不需要被序列化的字段
volatile多线程中,禁止线程缓存变量,保证可见性

10. 常见异常类继承结构图

Throwable
├── Error(程序无法处理)
└── Exception
    ├── IOException
    ├── SQLException
    └── RuntimeException
        ├── NullPointerException
        ├── IndexOutOfBoundsException
        └── IllegalArgumentException

✅ 总结

本篇你掌握了 Java 面向对象核心概念、内存结构、字符串比较及常用类机制,为之后学习集合框架、多线程、异常处理打下坚实基础。