hashCode与equals必须保持一致:相等对象的hash相同,hash相同不一定相等,故自定义类常需同时重写二者。==比较引用,equals可重写比较内容。String 为 final 不可变类,使用常量池提升性能,new 会在堆中再建对象。String、StringBuffer、StringBuilder 的区别在于是否可变及是否线程安全,字符串拼接建议根据场景选用 +、concat、StringBuilder 或 StringBuffer。接口仅定义规范(无构造器),支持多实现;抽象类可提供部分实现并拥有成员变量和构造器。二者结合实现面向接口编程,以降低耦合、提升可扩展性。

本文系统梳理了 Java 基础知识要点:异常处理流程包括 try‑catch‑finally,说明异常的捕获、记录、资源回收、抛出及堆栈传播;阐述 Throwable 层次结构及 Checked 与 Runtime 异常的区别;强调 finally 无论何种情况均会执行,且在其中使用 return/throw 会覆盖前面的返回行为;介绍 static 关键字对成员的作用、访问限制以及静态内部类的继承特性,并对比 static 与 final 的功能差异;深入讲解泛型的意义、类型擦除机制以及通配符 <? extends T> 与 <? super T> 的上下界规则;概述反射的原理、可实现的操作及在 JDBC、框架配置、AOP 等实际场景中的应用;最后列举 Java 四种引用(强、软、弱、虚)及其在垃圾回收中的行为。

Java集合分为Set、List、Queue、Map四大接口及其常用实现类(如HashSet、ArrayList、LinkedList、HashMap等)。大多数集合非线程安全,需通过Collections.synchronized或java.util.concurrent 包中的并发集合(Concurrent、CopyOnWrite)来实现安全。Map 实现包括 HashMap、LinkedHashMap、TreeMap、ConcurrentHashMap;HashMap 在 JDK8 中加入红黑树以优化冲突查询,采用负载因子0.75进行扩容,因非线程安全容易产生环形链表。Hashtable 虽线程安全但性能差且不允许 null;ConcurrentHashMap 通过分段锁或 CAS+同步实现高并发。LinkedHashMap 在 HashMap 基础上维护双向链表,保持键值对的插入顺序。

介绍了Java集合类的核心实现与区别:TreeMap 基于红黑树,所有基本操作均为 O(logN);Map 的键集合是无序且唯一的 Set,Set 与 List 在有序性和可重复性上的不同;ArrayList 采用动态数组实现,随机访问 O(1) 而插入/删除需数组拷贝;LinkedList 基于双向链表,插入删除 O(1) 但随机访问 O(N);线程安全的 List 包括 Vector、Collections.synchronizedList 和 CopyOnWriteArrayList,后者通过写时复制实现读无锁、高并发,但占用更多内存且写延迟;HashSet 依赖 HashMap,TreeSet 使用红黑树并支持自然或自定义排序;BlockingQueue 提供抛异常、返回特定值、阻塞、超时四组方法,内部以 ReentrantLock 与 Condition 实现生产者‑消费者的阻塞逻辑;Stream 划分为中间操作(filter、map、sorted 等)和终端操作(forEach、reduce、collect 等),并区分有状态、短路等特性,极大丰富了集合的聚合能力。

Java IO把键盘、文件、网络等抽象为流,分为输入/输出、字节/字符、节点/处理流。大文件宜用缓冲流或NIO的内存映射。NIO核心是Channel、Buffer、Selector,Buffer含capacity、position、limit,Selector实现单线程多通道。对象序列化需实现Serializable并定义serialVersionUID防止版本冲突。除JSON外常用Protobuf、Thrift、Avro等二进制序列化方案,也可使用原生Java序列化。

本文系统阐述了Java多线程的基本概念与实现技术。首先介绍了三种创建线程的方式——继承Thread类、实现Runnable接口和实现Callable接口,并比较了各自的优缺点,推荐使用Runnable/Callable。随后列举了Thread类的常用构造、静态及实例方法。重点说明了run()与start()的区别以及线程只能被启动一次的限制。接着描述了线程的五阶段生命周期(新建、就绪、运行、阻塞、死亡)及其状态转换。随后讨论了实现同步的手段,包括synchronized方法/代码块、ReentrantLock、volatile、原子变量。进一步介绍了线程间通信方式:Object 的 wait/notify/notifyAll、Lock 的 Condition(await/ signal/ signalAll)以及 BlockingQueue。最后对 wait 与 sleep、notify 与 notifyAll 的差异进行了对比说明。