-
Java线程生命周期有且仅有6种官方状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED,定义在Thread.State枚举中,是JVM层面的精确建模而非OS粗粒度划分。
-
Java中if语句易错点包括:误用=代替==、省略大括号、位与&替代短路与&&、浮点数用==比较;switch在多等值判断时性能更优,但需注意表达式必须全覆盖并用yield返回值。
-
Java中Stream可通过iterator()方法实现逐个遍历,适用于需显式控制流程的场景。调用iterator()获取Iterator后,利用hasNext()和next()遍历元素,如遍历整数列表1至5。注意流只能消费一次,重复使用会抛异常。此外,Stream支持Spliterator,通过spliterator()结合tryAdvance()实现更灵活的内部迭代,适合并行处理。使用时需注意:流为一次性、中间操作惰性执行、无限流需防死循环,并发流不保证顺序。iterator()在解析协议、批量汇总或
-
正确声明和使用变量与常量是Java编程基础。1.变量需指定类型和名称,建议初始化并采用驼峰命名法;2.常量用publicstaticfinal定义,名称全大写加下划线分隔;3.尽量缩小变量作用域,避免魔法值,优先使用基本数据类型,集合中选用包装类。
-
IntelliJIDEA实现保存即编译需三步协同:1.开启Settings→Compiler→Buildprojectautomatically;2.在Registry中启用compiler.automake.allow.when.app.running;3.校准模块Outputpath与构建路径一致(如Maven项目应为target/classes)。
-
评论数据存MySQL的comment表,含id、post_id(建索引)、author_name、email、content(TEXT)、create_time;后端用Servlet+JDBC,校验+PreparedStatement防注入;前端转义HTML防XSS。
-
Java并行流中直接修改共享集合(如ArrayList)会导致线程不安全;虽可用synchronized包装lambda,但违背流式编程原则、损害性能,正确做法是使用线程安全的Collector进行归约。
-
使用第三方库可删除PDF注释,首选ApachePDFBox或iText。1.PDFBox通过page.removeAnnotation(annot)遍历移除页面注释;2.iText7需解析PdfArray并过滤Subtype类型后重建数组;3.操作前需解密PDF,删除后须保存文件;4.注意嵌套结构、交互影响及合规性验证;5.PDFBox适合开源场景,iText适合精细控制需求。
-
自定义RuntimeException可明确表达业务错误,避免通用异常丢失上下文,如库存不足时抛出带商品信息的异常,提升代码可读性与系统健壮性。
-
Java中+号的行为取决于紧邻操作数类型:左侧为String或已字符串化时执行连接,否则执行算术加法;从左到右结合,顺序影响结果,如"a"+1+2得"a12",而1+2+"a"得"3a"。
-
Scanner类是Java中获取用户输入的主要方式,需导入java.util.Scanner包;2.创建Scanner对象读取System.in输入;3.使用nextInt、nextDouble、nextLine等方法读取不同类型数据;4.注意nextInt后接nextLine会跳过输入的问题,需用额外nextLine吸收换行符;5.使用close()关闭资源并处理可能的InputMismatchException异常。
-
Formatter类适用于需精细控制格式且解耦输出目标的场景,支持复用格式规则、指定Locale定制数字日期格式,通过StringBuilder高效构建字符串。
-
因为List可能在遍历中被修改,每次调用size()可确保按当前真实长度访问,避免索引越界或跳过元素;缓存size值会导致语义不安全。
-
volatile仅解决变量可见性,不保证原子性;适用于单写多读且写不依赖当前值的场景,如状态标志位;禁止指令重排序,但不保证long/double在32位JVM上的原子写;不延伸至引用对象内部。
-
System.out.printf是Java中不自动换行的格式化输出方法,需用%s、%d、%f等占位符严格匹配参数类型,支持宽度(%5d)、对齐(%-5d)、补零(%05d)、精度(%.2f)等修饰符,但性能低于println,适用于需对齐的调试输出。