java教程技术文章
-
静态代码块在类加载时执行且仅一次,构造块在new对象时、super()后执行;继承中父类静态块先于子类执行,构造块按父→子顺序插入各构造方法开头。471 收藏 -
ByteArrayOutputStream不适合拼装复杂二进制协议包,因其扩容被动低效、无法预分配、不支持回填、reset()不真正清空且toByteArray()总返回全量副本。121 收藏 -
避免过度使用try-catch的核心是区分异常类型、分离控制流与错误处理逻辑;只捕获具体异常(如IOException、JsonProcessingException、SQLException子类),不用Exception/Throwable兜底;禁用异常替代条件判断,应使用nonNull、Optional、containsKey等明确表达意图。213 收藏 -
Integer.toBinaryString()对负数返回32位补码二进制字符串(如-1→32个1),不带符号位、不补前导零;正数返回最简二进制形式(如5→"101"),0返回"0";需带符号或固定位宽时须手动处理。109 收藏 -
构建工具(如Maven、Gradle)的配置决定最终字节码版本,IDE设置仅影响语法检查与补全;pom.xml中maven-compiler-plugin的release参数优先于source/target,确保跨JDK编译安全。186 收藏 -
Arrays.asList()返回固定长度List,不可增删;因其实现类未重写add/remove,调用抛UnsupportedOperationException;基本类型数组会被整体当作单个元素,应改用包装类型或Stream处理。499 收藏 -
Pattern和Matcher用于Java正则操作:1.Pattern.compile()编译正则;2.matcher()创建Matcher;3.matches()或find()执行匹配;4.group()提取结果。400 收藏 -
在Java中使用HttpURLConnection设置User-Agent需在connect()前调用setRequestProperty("User-Agent",uaString),推荐使用主流浏览器真实UA字符串,但仅设UA不足以完全模拟浏览器,还需配合其他头部及请求策略。488 收藏 -
“组合优于继承”指多数场景应优先用“has-a”关系替代“is-a”关系,以降低耦合、增强可测性与系统稳定性;继承适用于明确“is-a”且父类专为扩展设计的少数情况。325 收藏 -
Java对象在new、反射、反序列化等操作时创建,最常见是new;对象可被回收当且仅当无GCRoots可达的强引用链;finalize已弃用,应使用AutoCloseable或Cleaner;回收时机由GC器决定,不可控。257 收藏 -
继承是多态的基础,多态通过父类引用调用子类重写方法实现运行时绑定,提升代码灵活性和可扩展性。366 收藏 -
括号真正起作用的关键是加在需优先计算的部分,而非越多越好;如a&&b||c默认为(a&&b)||c,若本意是a&&(b||c),则必须将b||c括起,多余外层括号无效且冗余。310 收藏 -
静态代码块不能替代构造函数前的实例初始化,它仅用于类加载时的一次性静态字段初始化,不感知实例;实例级统一预处理应使用私有基构造函数或Kotlin的init块。490 收藏 -
Collection必须实现15个核心方法:增删查基础操作(add、remove、contains、size、isEmpty)、批量操作(addAll、removeAll、retainAll、containsAll、clear)、遍历转换(iterator、toArray、toArray(T[])),以及JDK8+默认方法(stream、parallelStream、removeIf)。146 收藏 -
ConcurrentHashMap通过分段锁与CAS机制实现线程安全且高性能,并提供原子操作方法,适用于高并发场景。291 收藏