-
CheckedException是编译器强制要求处理的异常,如IOException,必须用try-catch捕获或throws声明;而UncheckedException包括RuntimeException和Error,如NullPointerException,编译器不强制处理,通常由程序逻辑错误引起。
-
最直接的方法是调用clear()方法,该方法会移除集合中所有元素,使集合变为空,适用于ArrayList、HashSet、HashMap等实现Collection接口的集合类,调用后原对象仍存在但元素被删除,若需释放内存可将引用置为null,注意多引用时clear()会影响所有指向该集合的对象。
-
偏向锁默认延迟4秒是HotSpot主动设计的冷静期,为避免JVM启动时内置线程频繁争抢撤销偏向锁;JDK15+起默认关闭,需显式启用-XX:+UseBiasedLocking。
-
工厂模式通过将对象创建逻辑集中封装,解耦业务代码与具体实现,支持动态类型选择、统一配置管理及后续架构演进。
-
静态成员属类、共享且类加载时初始化;实例成员属对象、独立且每次new时创建;静态方法不能访问实例成员;静态块先于实例块执行;静态内部类不持外部引用,非静态则持有;静态集合易致内存泄漏。
-
StructuredTaskScope是Java21实现结构化并发的核心机制,通过作用域自动强制子任务生命周期与父作用域绑定,解决ExecutorService边界模糊、错误传播手动、资源清理不可靠等问题。
-
Java内存模型(JMM)是定义多线程下共享变量可见性、有序性、原子性的抽象规范,与JVM堆栈等内存布局无关;volatile保证单次读写可见性和禁止重排序,但不保证复合操作原子性;happens-before规则是判断操作间可见性的唯一依据;final字段在正确发布前提下具有初始化完成的内存语义。
-
JavaFX凭借GPU加速、SceneGraph统一管理和帧同步线程模型,在动画、高刷、3D和WebView等场景显著优于Swing;Swing依赖CPU软渲染、缺乏内置异步抽象且布局维护成本高,适合简单界面或JDK≤8的老旧环境。
-
Java变量初始化是编译强制要求:局部变量必须显式初始化,成员变量虽有默认值但不推荐依赖,final变量须且仅能初始化一次,初始化顺序遵循严格规则以避免隐式依赖。
-
Java数组统计有三种方式:①for循环手动遍历,需注意整除精度、空数组判空;②StreamAPI用summaryStatistics()一行获取全部统计值,但空集合返回默认值;③Collections工具类需防异常,HashMap频次统计要预处理大小写和空白。
-
Log4j2依赖需同时引入log4j-api和log4j-core,否则运行时报错;配置文件log4j2.xml须置于src/main/resources下且命名准确;RootLogger级别与Appender绑定必须正确;多模块中可用log4j2.component.properties指定配置优先加载。
-
List.of和Map.of是Java9引入的不可变集合工厂方法,不支持null元素或键值,返回私有不可变类实例,调用add/remove抛UnsupportedOperationException;适用于默认参数、配置项、测试断言等只读场景。
-
newChild()先打印Grandparent静态块,因为JVM类初始化遵循父类优先原则:触发Child初始化前必须先完成Parent和Grandparent的初始化,且静态内容按源码声明顺序执行。
-
确定循环次数用for,不确定用while:for适用于可预知次数的遍历或计数,while适用于依赖状态变化的场景;for变量作用域受限更安全,while变量可后续复用;for-each适合纯遍历,需索引或修改集合时应回退传统for或使用迭代器。
-
安装JDK并配置环境变量,再选择IDE完成Java开发环境搭建。1.安装JDK17或21版本,记录安装路径;2.设置JAVA_HOME系统变量并添加%JAVA_HOME%\bin到Path;3.命令行执行java-version和javac-version验证安装;4.安装IntelliJIDEA、Eclipse或VSCode进行开发。确保路径正确,验证无误即可开始编写Java程序。