-
必须安装JDK(非JRE)并正确配置JAVA_HOME和PATH,确保javac与java版本一致且可调用;Maven版本需与JDK版本兼容,否则构建失败。
-
Java多线程数据不一致的根本原因是缺乏同步控制,导致非原子性操作、缓存可见性缺失和指令重排序;典型表现如i++丢失更新、volatile仅保可见性不保原子性、双重检查单例需volatile防半初始化对象。
-
Java字段初始化顺序严格按JVM规范执行:先静态(父类→子类,自上而下)、再实例(父类字段/块→父构造→子字段/块→子构造),最后构造器;混合调用易致空指针或默认值问题。
-
java-version仅显示版本,whichjava返回java路径,其上两级目录常为JDK根目录,但需验证是否存在bin/javac;java.home指向JRE或JDK的运行时根目录,非真实JDK路径;JAVA_HOME是用户设定的预期JDK路径,需检查bin/javac是否存在且可执行。
-
使用Scanner读取用户输入,支持多种数据类型,需调用close()释放资源;2.System.out作为PrintStream实例,提供print、println和printf进行格式化输出;3.文件操作推荐字符流(如FileReader/Writer结合BufferedReader/Writer)处理文本,避免编码问题;4.采用try-with-resources语句自动管理资源,确保流正确关闭,防止内存泄漏;5.掌握基本IO类及资源管理是处理文件、输入输出的关键。
-
外部类只能是public或包私有;内部类可使用任意访问修饰符,其private仅限外部类内访问;编译器为内部类访问外部类private成员生成合成方法。
-
Netty主从Reactor架构通过EventLoop串行化替代线程池实现线程安全,bossGroup仅需1线程负责accept,workerGroup默认CPU×2负责IO处理,Channel绑定固定EventLoop保障无锁。
-
Collections.sort()配合自定义Comparator可对学生列表按总分降序排序,总分相同时按学号升序;Stream.sorted()适合不修改原集合的场景,需遍历赋名次;并列排名需排序后扫描实现,首名固定为1,后续依与前一名分数是否相等决定名次。
-
Condition.await()不能替代synchronized.wait(),因它必须绑定ReentrantLock,需先lock.lock()再await(),且await()自动释放并重获锁;支持多条件精准唤醒、中断响应和超时等待,但须用while循环防虚假唤醒。
-
unabletocreatenewnativethread不是堆内存问题,而是操作系统拒绝分配线程资源,因线程栈、描述符等超系统限制(如threads-max或RLIMIT_NPROC)。
-
Controller应按业务域拆分、统一响应结构、合理使用注解、严格分层解耦;如电商系统分ProductController等,返回Result泛型体,用@PathVariable/@RequestParam/@RequestBody规范参数解析,DTO加校验,Controller仅协调不写业务逻辑。
-
catch块必须按子类到父类顺序排列,否则编译报错;Java7+支持无继承关系的多异常捕获;避免用Exception兜底掩盖问题;finally和try-with-resources总在退出时执行。
-
reduce方法用于将流元素归约为单个结果,支持求和、拼接等操作。1.无初始值时返回Optional,避免空流异常;2.提供初始值确保非Optional结果,适用于默认值场景;3.并行流专用版本含合并器,保证多线程结果正确合并,需满足结合律。
-
正确安装并配置JDK是运行Java程序的前提。首先从Oracle官网或OpenJDK下载对应系统版本的安装包,推荐使用长期支持版如JDK17或JDK21;Windows用户下载.exe文件并按提示安装,macOS用户通过.dmg镜像拖拽安装,Linux用户可使用sudoaptinstallopenjdk-17-jdk等命令安装。安装时需记录JDK路径,如Windows默认路径为C:\ProgramFiles\Java\jdk-17。随后配置PATH环境变量:Windows系统通过“此电脑”→“属性”→“高
-
使用AtomicInteger、synchronized或LongAdder实现线程安全的任务计数器,结合场景选择方案:AtomicInteger适合简单增减,synchronized适用于复杂逻辑,LongAdder提升高并发性能,配合CountDownLatch可协调任务完成,确保多线程下状态一致。