-
银行账户应封装为责任明确的实体,余额字段须private,仅通过deposit()和withdraw()校验后修改,构造方法拒绝负初始余额。
-
Java并发编程核心是安全共享状态;start()创建新线程执行run(),直接调用run()仅为普通方法调用;volatile仅保证可见性不保证原子性;synchronized锁的是指定对象实例;submit()返回Future支持结果与异常处理,execute()则不。
-
迪米特法则强调对象只与“朋友”通信,避免火车式调用;应通过委托方法封装嵌套访问、返回不可变/抽象结果,并用协调者解耦多对象协作。
-
Java接口的本质是纯粹的行为规范契约,只定义“做什么”而不涉及“怎么做”,通过无状态、多实现、按契约注入等机制实现彻底解耦。
-
Java集合框架是围绕Collection和Map接口构建的契约体系,接口定义操作,实现类负责高效实现;List与Set核心区别在于唯一性语义而非顺序;哈希类集合依赖hashCode()与equals()一致性。
-
Java子线程未捕获异常会静默退出,需通过Thread.UncaughtExceptionHandler捕获;ExecutorService中Runnable异常被吞,Callable异常需Future.get()触发;推荐用自定义ThreadFactory统一设置异常处理器。
-
abstract类必须被继承才能实例化,不能直接用new创建对象;它可含普通方法、静态方法、构造器等,但抽象方法无方法体且不能为private/final/static;子类须实现全部抽象方法或声明为abstract;与interface相比,abstract类支持代码复用和“is-a”关系,而interface适合“can-do”能力及多实现。
-
应用Java插件并设置项目基本信息,配置仓库与依赖管理,自定义构建任务,优化性能参数。示例包括启用java插件、定义group和version、指定Java版本、添加mavenCentral仓库、声明implementation依赖、创建printBuildInfo任务、在gradle.properties中启用守护进程与并行构建,提升构建效率。
-
Scanner适合类型明确的简单交互,BufferedReader适合高吞吐纯文本处理;Scanner自动类型转换但易出错、性能低、编码受限,BufferedReader高效可控但需手动解析;二者不可混用同一System.in流。
-
URLConnection因缺乏重定向、连接池、JSON支持及默认超时等能力而被弃用;推荐OkHttp(API简洁、性能好)、ApacheHttpClient(稳定但繁琐)或Java11+HttpClient(标准库、轻量),Spring项目优先选WebClient。
-
RecordPatterns是Java21正式引入的模式匹配特性,扩展instanceof和switch对record字段的直接解构能力,编译期类型检查,无需getter且无反射开销。
-
finally块总在try/catch执行完、方法返回前执行(JVM未强制终止时),即使有return/throw/break/continue;return值先暂存再执行finally,其中return会覆盖原值,抛异常则吞掉原异常;唯一不执行是JVM提前退出。
-
Java源文件中至多一个public类,其名必须与文件名(不含.java)严格一致且大小写敏感;可含多个非public类;无public类时文件名任意但需合法;main方法所在类无需public修饰。
-
JavaCleaner未触发是因为清理动作中隐式持有了被注册对象的强引用,导致对象无法进入幻象可达状态;本文详解其原理、典型错误、安全实现方案及最佳实践。
-
NullPointerException是Java中继承自RuntimeException的非受检异常,因对null引用执行方法调用、字段访问、数组操作或自动拆箱等操作而触发,反映逻辑缺陷而非外部故障,编译器不强制处理,需通过判空预防。