java教程技术文章
-
switch表达式需显式yield返回值,箭头分支单表达式自动yield,块分支须手动yield;枚举类型必须穷尽所有常量;逗号分隔case支持多常量;类型推导严格,null需匹配声明类型。354 收藏 -
Collections.replaceAll方法用于替换List中所有旧值为新值,基于equals比较,修改原列表并返回是否发生替换。444 收藏 -
Integer.toUnsignedString是Java8引入的用于将int按无符号语义转字符串的方法,解决高位为1时有符号输出负数的问题,内部通过long类型加法绕过符号位处理。379 收藏 -
Charset.availableCharsets()返回SortedMap<String,Charset>,键为标准字符集名(如"UTF-8"),值为对应Charset实例;它仅包含JVM当前已加载注册的字符集,不保证穷举所有可能,且结果受JDK版本、厂商、操作系统及动态provider影响。354 收藏 -
基数排序适合处理固定长度的整数或字符串,按位分组计数、不比较大小,时间复杂度为O(d×(n+k));电话号码需清洗、统一为11位数字数组,再逐位进行稳定计数排序。402 收藏 -
Java的try-with-resources本质是编译器自动生成带异常压制的逆序close调用,资源变量提升为局部变量,finally中按声明逆序关闭,每个close独立捕获异常并压制到主异常。208 收藏 -
空对象模式是用有行为、有语义的默认对象替代null,解决调用方需安全调用方法的设计问题;适用于“空”为有意义业务状态的场景,如未登录用户、无优惠券、日志未启用等,而非错误情形。171 收藏 -
slice()创建的是可读字节范围的独立视图,新缓冲区position恒为0、capacity和limit等于原缓冲区remaining(),底层数据数组完全共享,索引状态互不影响,但修改共享内存内容双方立即可见。175 收藏 -
可用ASCII值作数组下标直接计数,适用于0–127或0–255范围;支持Unicode需预处理;统计英文字母可压缩至26位,分组计数(大小写、数字)可提升效率与清晰度。338 收藏 -
ConcurrentHashMap的无锁读不依赖扩容过程,而是靠volatile+不可变性+有序写入保障;get()只算hash、定位桶、遍历查找,不检查sizeCtl、transferIndex或nextTable,即使正在扩容也只读原table或已迁移节点。188 收藏 -
MongoDB官方Java驱动和SpringDataMongoDB均未提供内置的文档版本控制功能,需通过手动添加版本字段、历史集合或变更流等方式实现,本文详解三种主流实现方案及代码示例。360 收藏 -
try-catch本身不阻碍JIT编译,但作用域过大会稀释热点密度、延迟C2编译;应将核心逻辑抽为无try的小方法,异常处理外移到调用层。190 收藏 -
getFirst()和getLast()是LinkedList的O(1)首尾安全访问方法,空链表抛NoSuchElementException,需判空或try-catch;非List接口方法,仅Deque实现类支持。439 收藏 -
Float.floatToIntBits()是将float的IEEE75432位二进制表示直接解释为int位模式,不进行数值转换;它用于位级操作,如精确比较、序列化和哈希,区别于(int)f等数值映射。215 收藏 -
@Retention(RetentionPolicy.RUNTIME)是前提,否则注解编译后即丢弃,运行时无法通过反射获取;必须搭配@Target指定作用位置,且注解元素需为常量类型、有合法默认值,反射读取时须判空并从实际声明类中获取。487 收藏