-
Java异常国际化核心是分离消息键与文案,异常仅持key(如user.not.found),文案由messages.properties等资源文件按Locale动态加载,结合ResourceBundle与MessageFormat实现延迟解析,并可通过Spring的ResourceBundleMessageSource简化集成。
-
Java模块化(JPMS)是支撑大规模代码重用的基础设施,package不等于module:前者无访问控制、无依赖验证、无法封装资源;module-info.java通过requires/exports/opens显式声明依赖与可见性,exports限制public访问,opens仅允许反射访问;混用-classpath会创建隐式命名模块破坏隔离。
-
Java并发集合通过分段锁、CAS、不可变快照等机制实现线程安全与高性能,支持原子复合操作,适配不同读写场景,但不保证跨操作业务逻辑的原子性。
-
Android应用在AndroidStudio中构建成功、日志显示启动完成,却无界面弹出,通常因启动Activity未正确配置为可导出(exported)或未设为默认启动项所致。
-
for循环由初始化、条件判断和更新语句组成,用于已知循环次数的场景;2.示例中打印1到5需修正条件为i<=5,递减循环应有正确终止条件;3.掌握执行顺序可提升编码效率并避免错误。
-
多层try-catch用于分层处理异常,外层捕获通用异常如NullPointerException,内层处理具体异常如IOException和NumberFormatException,通过方法拆分实现扁平化结构,结合try-with-resources确保资源自动释放,catch顺序需遵循从具体到通用原则,提升代码可读性与稳定性。
-
Java第一个程序需定义public类(名与文件名一致),含publicstaticvoidmain(String[]args)方法,用System.out.println()输出,先javac编译再java运行。
-
Future是Java中用于获取异步计算结果的核心接口,需配合ExecutorService提交Callable任务使用,提供get()、isDone()、cancel()等方法实现结果获取与任务控制,支持超时等待和异常处理,但存在阻塞局限,Java8起推荐CompletableFuture替代。
-
Collections.sort()基于TimSort算法,结合插入排序与归并排序,适用于List类型,要求元素可比较或提供Comparator,确保排序稳定高效。
-
反射调用比直接调用慢10–100倍,因JVM无法内联Method.invoke(),需动态解析、权限检查、类型匹配、装箱拆箱及异常包装;应缓存Method、设setAccessible(true),优先用代码生成替代。
-
ArrayList查询快,因其底层基于连续内存的数组,支持下标直接访问,时间复杂度O(1);相比LinkedList需遍历指针且节点分散,它还具备缓存友好性和更少的对象引用开销。
-
Java程序需先经javac编译为平台无关字节码(.class),再由JVM加载、链接、初始化并执行;编译与运行分属独立阶段,各有类路径、版本及错误约束。
-
应优先用entrySet()遍历HashMap(需value时),因其避免重复哈希查找;仅用key时keySet()更清晰且无性能损失;TreeMap/LinkedHashMap无此优势;forEach(BiConsumer)强制走entrySet。
-
根本原因是IDEA存在全局、项目、文件三层编码配置且优先级不同,仅设ProjectEncoding不生效;需同步统一三项编码、右下角手动转码、pom.xml声明、Maven资源插件指定UTF-8。
-
首先生成RSA密钥对,再用私钥对数据摘要签名,最后用公钥验证签名有效性。具体步骤:1.使用KeyPairGenerator生成2048位RSA密钥对;2.利用Signature.getInstance("SHA256withRSA")初始化签名对象,调用initSign(privateKey)并update数据后生成签名字节;3.验证时调用initVerify(publicKey),update相同数据后调用verify()返回布尔结果。可扩展至文件签名,需注意字符编码与异常处理,私钥应安全存储。