-
Java异常日志需精简:未捕获顶层异常、业务关键路径异常、首次新类型异常须保留完整堆栈;已知业务异常、高频重试失败、循环内相同异常应精简;可通过工具类、日志过滤器、去重机制实现轻量控制,并遵循结构化、可检索、定期评估的协作规范。
-
@Retention是Java中指定注解保留策略的元注解,不创建注解而控制其生命周期:SOURCE(仅源码)、CLASS(默认,.class中但运行时不可见)、RUNTIME(.class中且反射可读)。
-
首先确认并安装合适版本的JDK,设置JAVA_HOME和PATH环境变量;然后下载兼容版本的Tomcat,配置CATALINA_HOME并启动服务验证;接着在IDE中添加Tomcat服务器并部署项目;最后通过日志排查端口占用或版本不兼容等问题,确保开发环境稳定运行。
-
static修饰的成员属于类而非实例,包括静态变量(所有对象共享)、静态方法(只能访问静态成员)、静态代码块(类加载时执行一次)和静态内部类(不依赖外部类实例)。
-
最常用且最安全的方式是使用stream().filter(),它声明式过滤、不修改原集合、需collect()获取结果,null时应先判空;就地删除用removeIf()或Iterator.remove();Map过滤需先转entrySet()。
-
常见原因是用户输入非数字内容(如“95分”或直接回车)而程序用nextInt()强行读取,导致InputMismatchException;应改用nextLine()读整行并用Integer.parseInt()转换,配合try-catch处理,并注意消费换行符。
-
使用Scanner类读取键盘输入,需导入java.util.Scanner并创建实例;2.调用nextInt、nextLine等方法获取不同类型数据,注意nextInt不读取换行符可能导致nextLine读取空字符串;3.推荐使用后关闭Scanner;4.输出通过System.out.println打印并换行,print不换行,printf实现格式化输出;5.注意处理InputMismatchException异常及合理使用循环读取多组输入。
-
Java中通过this()实现构造方法链,确保代码复用和初始化一致性,this()必须是构造方法首条语句,且不可递归调用,避免循环依赖。
-
CAS是CPU指令级原子操作,通过cmpxchg等硬件指令实现“读-比-写”三步不可分割;它非Java语法,由Unsafe封装调用,存在ABA问题、循环开销大、不支持多变量复合操作等局限。
-
Arrays工具类提供排序、查找、比较、填充和复制等操作,提升开发效率。1.sort()支持基本类型和对象数组排序,对象数组可结合Comparator实现降序;2.binarySearch()需在有序数组上执行,否则结果不可预测,查找失败返回负值表示插入点;3.equals()比较一维数组内容,deepEquals()用于多维数组深度比较;4.fill()可全量或范围填充数组;5.copyOf()和copyOfRange()简化数组复制。注意使用前提如排序状态和引用类型匹配,避免误用。
-
集合框架比数组更灵活可扩展,但需依场景选择:动态扩容、类型安全、内置算法和对象操作选集合;固定长度、高性能读取、低内存开销选数组。
-
InterruptedException是线程被主动中断时抛出的检查异常,必须显式处理;它仅在调用特定阻塞方法且线程已被interrupt()时触发,本质是设置中断状态位并在阻塞点抛异常,而非强制终止线程。
-
Java集合框架提供统一、可扩展、类型安全的容器接口与实现,解决数组长度固定、缺乏内置算法等问题,支持动态扩容、泛型约束、统一操作契约及并发安全等特性。
-
final修饰变量、方法、类分别实现引用/值不可变、禁止重写、禁止继承;但final仅是不可变性的必要条件,非充分条件,需配合private、无修改方法、防御性拷贝等才能实现真正不可变。
-
新建项目时在“Projectlocation”选择桌面路径,如Windows的C:\Users\用户名\Desktop或macOS的/Users/用户名/Desktop;2.编辑文件时通过“SaveAs”将文件另存到桌面;3.右键文件使用“ShowinExplorer”或“RevealinFinder”后复制到桌面。需手动指定路径,IDEA不默认保存至桌面。