-
Java类加载顺序为:启动类加载器→扩展类加载器→应用类加载器,且遵循双亲委派模型;启动加载JAVA_HOME/jre/lib下核心类,扩展加载lib/ext(JDK9+废弃),应用加载-cp指定路径、CLASSPATH或当前目录,从左到右查找首个匹配类。
-
Locale是Java国际化的基石,用于标识用户所属地理文化区域及表达习惯,如日期、货币、数字格式和文字排序规则,不负责翻译且区别于时区与用户偏好源头。
-
Graylog启动失败主因是MongoDB或Elasticsearch未就绪:需确保4GB空闲内存、调低ES堆内存、用mongo:5.0镜像、配置healthcheck;Java发日志超时需检查GELFUDP绑定地址、防火墙、宿主机IP及字段映射。
-
必须安装JDK而非JRE,正确配置JAVA_HOME指向JDK根目录并将其bin加入PATH,通过java-version和javac-version验证版本一致,IDE需手动指定SDK避免缓存干扰。
-
静态嵌套类不持有外部类实例引用,可直接通过Outer.StaticNested创建,仅访问static成员;普通内部类隐式持有外部类引用,需依附实例存在,可访问所有成员。
-
ExceptionInInitializerError是JVM在类首次主动使用时执行静态初始化失败所抛出的包装异常,根本原因是static块或静态字段初始化中发生的原始异常(如NullPointerException),需通过堆栈中“Causedby”定位真凶。
-
接口回调是一种通过实现特定接口在任务完成后通知结果的设计模式,利用多态将回调对象传递给异步方法,任务结束时自动触发对应方法处理结果,如网络请求后更新UI;其作为异步编程基础,虽易产生嵌套地狱,但为CompletableFuture等高级机制提供核心支持。
-
JavaStream通过中间操作(如filter、map、sorted、distinct)和终端操作(如collect、forEach、count)实现集合元素的函数式处理,不修改原数据源,每次调用需重新执行。
-
Java中应优先使用String.format()或printf()而非直接newFormatter(),因其线程不安全、需手动管理资源、易误用且格式错误会抛异常;复杂场景宜选MessageFormat或模板引擎。
-
封装是通过访问修饰符控制访问权限,隐藏内部实现并暴露安全接口。核心在于合理使用private、getter/setter、不可变返回值、防御性拷贝及接口隔离,而非简单用class包裹代码。
-
JSR是Java标准化提案编号,非API或依赖包;它由JCP组织协调制定,描述规范而非提供实现,实际使用需依赖对应参考实现,且现代Java开发中已逐步被JakartaEE等新流程取代。
-
静态成员属于类本身而非实例,JVM在类初始化阶段为其分配唯一内存,所有实例共享;调用不依赖对象,由声明类型决定隐藏行为,与对象无关。
-
能,HashMap允许一个null键,通过特殊分支处理哈希计算与查找,get(null)返回对应值或null(无法区分不存在与值为null),而ConcurrentHashMap因并发安全原因禁止null键。
-
ZXing报WriterException主因是参数越界或类型不匹配:content非空且URL编码后≤2953字节、宽高≥100、BufferedImage需TYPE_INT_ARGB;Swing显示需正确转ImageIcon并调revalidate/repaint;关键EncodeHintType仅ERROR_CORRECTION、CHARACTER_SET、MARGIN;jar缺失zxing-javase依赖或未设headless模式亦致失败。
-
Java堆存对象和数组等线程共享数据,栈存线程私有的局部变量、参数等;对象总在堆里因栈仅存引用,实际数据需垃圾回收与线程隔离支持。