-
Eclipse启动提示“NoJavavirtualmachinewasfound”或JRESystemLibrary显示unbound,说明未正确配置外部JDK;需先验证java-version和javac-version可用,再在Preferences→Java→InstalledJREs中手动添加JDK根目录,最后为项目指定JRE。
-
需确保类定义一致并显式声明serialVersionUID;多对象应封装集合序列化;ClassNotFoundException需检查类路径;性能差时改用BufferedInputStream或Kryo等替代方案。
-
Swing中UI更新必须在事件调度线程(EDT)执行,非主线程直接更新会导致异常。应使用SwingUtilities.invokeLater()将更新任务提交至EDT异步执行,或使用SwingWorker处理带进度反馈的复杂任务,其内部自动切换线程并安全更新UI。避免在工作线程中直接操作UI或在EDT中执行耗时操作,防止界面卡顿或死锁。遵循“耗时操作放工作线程,UI更新回EDT”原则,确保线程安全。
-
jstack中识别数据库连接获取卡顿需结合线程状态与栈上下文:WAITING/TIMED_WAITING状态、栈顶为Object.wait()或LockSupport.park()、位于getConnection()调用链中且无后续JDBC操作,同时存在数据库驱动类。
-
Interface静态方法不能替代单例模式,因其不提供实例构造与管理能力;NIMInterfaceStatic是带静态方法的类而非interface;Java/TS的interface均不支持静态方法实现,所谓“interfacestatic方法”实为误称。
-
老年代缓慢上涨是长生命周期对象堆积信号,非必然内存泄漏;需用jstat观察FullGC后OU阶梯上升,结合jmap-histo比对、全量dump及MAT分析,排查缓存、大对象及G1Humongous分配问题。
-
能,但仅限子类内部;外部调用永远走多态,super只是编译器为子类提供的静态绑定后门,不参与虚方法表查找,且不可在静态上下文或外部类中使用。
-
抽象类不能直接实例化但可有构造方法,其构造方法由子类对象创建时自动或显式调用,用于初始化继承字段、校验参数及执行前置逻辑。
-
<p>binarySearch查不到时返回-(insertionpoint)-1,非报错;插入位置为-returnvalue-1,需确保列表升序、比较器一致、避免null比较异常及泛型不安全。</p>
-
char是基本类型占2字节,Character是包装类可为null、支持泛型;必须用Character的场景包括泛型集合、反射、空值语义;需注意自动装箱拆箱陷阱、缓存范围(0–127)、禁止用==比较、避免高频装箱影响性能。
-
Java中package声明必须位于源文件首行,前面仅允许注释或空行,且一个文件只能有一个;包名须全小写、用点分隔、遵循反向域名规则,且必须与文件系统路径严格对应。
-
不能用String.compareTo()比较版本号,因其按字典序导致"2.10"<"2.9"错误;应拆分"."后逐段转整数比较,注意空段处理与需求对齐。
-
分层编译是JVM动态选择5级渐进优化策略的机制:0级纯解释执行,1级C1基础优化,2/3级C1+profiling,4级C2激进优化;触发依赖调用计数与回边计数,非固定阈值。
-
Java反射是JVM提供的标准API,用于运行时动态操作类信息,但性能差、破坏封装且易出错,应优先用接口、工厂、注解处理器等替代方案。
-
ArrayList存歌名需空值检查防NPE;Arrays.asList返回不可变列表;重复歌名用ArrayList或LinkedList,去重用LinkedHashSet;播放列表推荐LinkedList配currentIndex;操作前必检索引越界与空指针。