-
应使用double而非float存储身高体重,因float在常见范围内易精度丢失导致BMI判断失败,且Java默认浮点类型为double,混用会引发隐式转换风险;BMI计算需确保单位统一、校验正数输入,并避免硬编码平方或误用Math.sqrt()。
-
Java中接口支持多继承,通过extends可扩展多个接口。例如MoveableextendsFlyable,Swimmable,实现类Duck需实现所有方法;若default方法冲突,必须重写解决;同名常量应通过接口名明确引用,避免歧义。
-
使用java.awt.Robot模拟文件上传后键盘失灵(如Ctrl键常驻触发),根本原因是按键按下后未对应释放,导致系统级按键状态异常,需严格配对keyPress()与keyRelease()。
-
ConcurrentHashMap可实现线程安全简易缓存,支持原子操作如computeIfAbsent,适合静态数据;需手动管理过期与清理,不自动回收;Weak/SoftReference不适用因不可控且非线程安全;LinkedHashMap非线程安全且无TTL;复杂场景应选Caffeine。
-
Java死锁典型场景包括:①多线程以不同顺序获取同一组Lock或synchronized对象,如银行转账中线程A先account1后account2、线程B反之;②嵌套同步且锁对象不一致。
-
并发是程序能同时管理多个任务,即使单核也靠时间片切换实现;并行需多核硬件支持,真正物理同时执行。Java中应优先用ExecutorService线程池而非裸Thread,并注意parallelStream()共享ForkJoinPool的风险。
-
IntelliJIDEA解压即用,需配置JDK11+并新建Java项目验证:下载压缩包→解压至英文路径→运行bin/idea.exe或idea.sh→在ProjectStructure中添加JDK→新建项目运行HelloWorld成功即配置完成。
-
SpringBoot使用SpringDataRedis时,CrudRepository对boolean类型字段(如isActive)的派生查询(如findAllByActiveFalse())常因序列化/反序列化不一致而返回空结果;根本原因是Redis存储的布尔值被序列化为字符串"true"/"false",但默认查询仍按boolean类型匹配,导致类型不匹配。
-
学生类和课程类应作为独立实体设计,通过Enrollment关系类建模多对多关联;ID统一用String;选课需校验存在性、重复性、容量等;退课与查询应维护courseToStudents、studentToCourses等内存索引以实现O(1)操作。
-
Java中通过throws声明受检异常并由调用者用try-catch处理,底层传递异常、上层捕获并转化业务异常,提升程序健壮性与可维护性。
-
Semaphore许可数应根据目标资源真实容量设定,如数据库连接池为5则设为5,需预留10%~20%余量,动态资源应换用Resilience4j等限流器。
-
Eclipse中必须配置JDK(而非JRE)才能正常编译调试及使用新语法;需在InstalledJREs中添加JDK根路径,并在项目级设置JavaBuildPath、CompilerCompliance和ProjectFacets保持版本一致。
-
Java中Set的并、交、差需用addAll、retainAll、removeAll,但会原地修改;判断交集非空应使用!Collections.disjoint()而非retainAll返回值。
-
生成复杂Excel报表的核心在于选择合适工具库、设计数据模型并结合模板或代码实现样式与结构控制。一、选择ApachePOI适合精细控制样式、公式和图表,而EasyExcel适合大数据量导出且上手快;二、设计清晰的DTO/VO层以组织多维数据,包括主表、明细、汇总信息;三、采用模板驱动方式可减少硬编码样式工作量,结构动态变化则用代码构建;四、处理多级表头需合理设计数据结构(如HeaderInfo类)并精确计算坐标合并单元格;五、优化性能时,POI的SXSSFWorkbook和EasyExcel均支持流式写入
-
Java基本类型不能直接参与OOP操作,必须用包装类(如Integer、Boolean)转为对象才能调用方法、放入集合、作为泛型参数或实现多态;因int是primitive,无方法、不继承Object、无运行时类型信息,JVM在栈上直接存值,与堆中对象机制不同。