-
Collectors是Stream的终端收集器,用于将流结果规整装入指定容器;必须配合collect()使用,提供toList、groupingBy、joining、toMap等模板,需注意key冲突处理、下游收集器嵌套规则及返回集合的可变性与线程安全性。
-
Java注解本身不执行逻辑,其“生效”依赖@Retention策略及配套处理机制:SOURCE级由编译器检查,CLASS级供字节码工具织入,RUNTIME级通过反射读取;Spring等框架需扫描与代理等显式支撑。
-
EclipseJava开发需确保JDK路径正确、工作空间权限充足、项目构建路径未被篡改;须手动配置JDK17.0.1+为默认JRE,新建项目时指定该JRE,检查BuildPath中Modulepath和Classpath完整性,并验证编译级别与JDK版本一致。
-
Java线程池有4种内置拒绝策略:1.AbortPolicy抛异常,适用于支付等关键业务;2.CallerRunsPolicy由调用线程执行,实现降速,适合非实时任务;3.DiscardPolicy静默丢弃,用于可丢失任务;4.DiscardOldestPolicy丢弃最老任务,适用于新数据价值更高的场景。
-
当图标与JAR包一同分发时,应使用类路径资源加载方式(如getClass().getResource()),而非硬编码文件系统路径,以确保程序可移植、可打包部署。
-
Java项目中文乱码源于源文件读取、编译、JVM运行、IDE显示、构建工具五环节编码不统一;需统一设为UTF-8:源码保存为UTF-8无BOM,IDE全局/项目编码设UTF-8,javac加-encodingUTF-8,JVM启动加-Dfile.encoding=UTF-8,构建部署环境同步配置。
-
不该。Java中用异常控制业务流程会模糊错误语义、降低性能、增加理解成本;仅当发生真正意外(如连接断开)或违反契约(如传null)时才用异常,其余应使用Result等明确返回类型封装状态。
-
判断字符串是否为空或仅含空白字符:Java11+用isBlank(),Java8及以前需null检查后trim().isEmpty();substring()在Java7u6后改为复制数组防内存泄漏,Java9起优化为O(1);split()默认丢弃末尾空串,可用负limit保留;拼接优先用String.join()或StringBuilder,避免循环中用+。
-
URL类不能直接解析域名和端口,仅做语法校验与结构封装;getHost()和getPort()提取显式指定的主机与端口,不补默认值、不验证可达性;需用URI处理相对路径、标准化及安全哈希。
-
优先用Integer.valueOf()(返回缓存Integer对象)而非parseInt(返回基本int);parseDouble有宽松解析隐患;BigDecimal必须用字符串构造避免精度丢失。
-
首先检查java.io.tmpdir系统属性指向的临时目录是否存在且可写,通过System.getProperty("java.io.tmpdir")确认路径有效性;若路径无效或权限不足,需在启动时用-Djava.io.tmpdir指定有效目录,并确保该目录具备读写权限;其次验证操作系统默认临时目录(Windows为C:\Windows\Temp或用户Temp,Linux/macOS为/tmp)是否存在且权限正确,Linux下应为1777权限,可通过sudochmod1777/tmp修复;同时检查Wind
-
Path和Files比File更适合现代Java文件操作,因Path专注路径语义(标准化、解析、跨平台),Files提供原子、可中断、异常明确的I/O操作,共同解决File路径耦合、异常模糊、跨平台缺陷等问题。
-
选择ConcurrentHashMap因它采用分段锁或CAS+synchronized机制,支持高并发读写,避免全局锁性能瓶颈,适用于频繁增删改查的统计场景。
-
IntelliJIDEA中Git合并冲突后出现的“java:illegalstartofexpression”等语法错误实为IDE未正确识别冲突标记所致;应优先使用内置ResolveConflicts…工具处理,避免手动删除标记或依赖外部合并工具,并在必要时清理缓存重启。
-
使用HashMap可手动统计集合元素出现次数,通过遍历并利用getOrDefault方法实现;Java8Stream结合groupingBy和counting更简洁;若项目引入Guava库,可用Multiset高效处理。