-
没有运行时区别,但语义和可读性差异明显:int[]a符合Java类型声明习惯,inta[]是C风格易误读;声明多个变量时int[]a,b为两个数组,inta[],b则b是int变量;初始化{1,2,3}仅限声明时使用,newint[5]支持运行时长度;类字段默认null,局部变量未初始化直接使用编译报错;方法参数用int[]更安全,利于工具识别与跨语言兼容。
-
数组实现拓扑排序检测依赖环的核心是Kahn算法:用入度数组记录各变量被依赖次数,邻接表数组记录其直接依赖项;通过静态数组模拟队列进行BFS式剥离,最终若处理节点数cnt等于n则无环,否则存在环。
-
Comparator.nullsFirst()的核心作用是生成一个能安全处理null的比较器包装器,使所有null值排在非null值之前,而非null元素仍按原比较逻辑排序。
-
new触发类加载(含初始化)后分配内存并写入对象头,再自顶向下执行构造器链;反射、clone、反序列化等绕过构造器,导致字段未按预期初始化。
-
Springfox3.x在SpringBoot2.6+需配置spring.mvc.throw-exception-if-no-handler-found:false且spring.resources.add-mappings:true,访问路径为/swagger-ui/;SpringBoot3.x不兼容Springfox,须迁移到springdoc-openapi。
-
Path.iterator()不解析变量目录,仅遍历路径字符串按分隔符切分后的逻辑段;需先手动展开变量(如${HOME}),再构建Path并调用iterator()。
-
双亲委派被破坏的典型场景有四类:1.线程上下文类加载器(TCCL)用于SPI加载;2.模块化容器如OSGi实现类隔离;3.JDK自身对动态代理、Lambda等的特殊处理;4.用户自定义ClassLoader主动绕过。
-
HashMap允许null作为key和value,这是设计选择而非bug;但get()返回null时存在二义性:既可能键不存在,也可能键存在而值为null,易引发逻辑误判和偶发异常。
-
NumberFormat.getPercentInstance()将比率值(0.0–1.0)自动×100并添加本地化百分号,需传入0.75而非75;默认舍入为整数,可通过setMinimum/MaximumFractionDigits控制小数位;必须指定Locale以确保多语言正确性;parse()会自动÷100还原为比率。
-
Java设计原则是解决具体问题的实践依据,误用比不用更危险;SOLID需结合变化原因判断拆分,Liskov要求子类不加强前置条件,OCP宜用@ConditionalOnProperty或策略模式,DTO构建优先Lombok@Builder或record,依赖注入按测试需求选构造或字段注入,细节一致性决定系统寿命。
-
<time>标签是HTML5中专为日期和时间设计的语义化元素,需通过符合ISO8601标准的datetime属性提供机器可解析的时间值,同时可自定义用户友好的显示内容;禁止省略datetime、使用模糊值或包裹非时间内容。
-
Thread.dumpStack()直接输出到stderr且返回void,无法获取字符串;需用newThrowable().getStackTrace()获取可控栈帧数组,注意其只打印当前线程栈、不适用于生产日志。