java教程技术文章
-
Callable是支持返回值和受检异常的泛型接口,通过Callable<V>定义任务、submit()返回Future<V>获取结果,配合invokeAll()和超时处理可安全执行并收集多种类型异步任务。497 收藏 -
Lambda表达式是将单抽象方法接口的匿名类简化为简洁函数式写法的机制,适用于事件监听、线程任务和集合操作三类场景,需遵循无状态、单行优先、避免受检异常等原则。497 收藏 -
灰度化核心是用加权平均公式0.299×R+0.587×G+0.114×B逐像素计算亮度并截断至0–255,需注意通道顺序(RGB/BGR)、数组维度、批量读写及Alpha通道单独处理。497 收藏 -
JDK15起默认禁用偏向锁,因其在多核高并发场景下收益为负:易触发STW撤销、内存开销大、短命对象导致初始化成本超收益,而轻量级锁+自旋已更优。497 收藏 -
配置JUnit需先添加依赖,Maven在pom.xml中引入junit-jupiter,Gradle在build.gradle添加testImplementation;随后在IDEA或Eclipse中创建测试类,使用@Test注解编写方法,运行即可。497 收藏 -
comparingLong比comparing更适合long类型,因其避免自动装箱、零内存开销、无空指针风险(函数不返回null时),且要求getter返回primitivelong;若返回Long则编译失败,需改用comparing+Long::longValue或null安全方案。497 收藏 -
空捕获会吞掉异常所有线索,导致静默失败;finally中return会覆盖异常;包装checkedexception需保留语义;日志必须用结构化模板+异常对象,禁用printStackTrace。497 收藏 -
Iterator使用需遵守契约:必须先hasNext()再next(),remove()仅限next()后立即调用;foreach本质是Iterator,禁止直接修改集合;ListIterator支持双向遍历但仅适用于List。497 收藏 -
@SneakyThrows通过编译期字节码操作将受检异常强制转为RuntimeException抛出,绕过javac检查;需正确配置Lombok、作用于具体方法且匹配异常类型,避免滥用破坏API契约与异常可追溯性。497 收藏 -
本文详解如何对两个10×10整型二维数组分别计算元素总和,并精确统计其中一位数、两位数、三位数的个数,同时对比两数组总和大小,提供可复用、模块化、符合面向对象原则的完整实现方案。497 收藏 -
本文介绍一种高效、可读性强的方法,用于比较两个List<Person>列表——先按score降序排序,再逐个位置比对最高分、次高分直至分出优劣,支持长度不等和分数重复场景。497 收藏 -
Java继承与多态是运行时行为基石,非语法糖;继承体现“is-a”语义一致性,须满足里氏替换原则;多态依赖父类引用指向子类对象及虚方法调用,由JVM查vtable动态分派。497 收藏 -
File.listFiles()返回null是因权限不足、路径不存在或I/O异常,非空目录;须先判空避免NPE;Files.walk()更安全但需限深防OOM,且须及时关闭流。497 收藏 -
DoubleSummaryStatistics专为DoubleStream聚合统计设计,适用于需同时获取平均值、最值、总和、元素个数等多指标的场景;必须通过Collectors.summarizingDouble()创建,空流返回默认值需谨慎判断。497 收藏 -
List接口的replaceAll方法可用于批量修改元素,它接受UnaryOperator参数对每个元素进行转换并原地更新,适用于需直接修改可变列表的场景,但不支持Set等集合且存在线程安全和不可变集合限制,若需新列表或更高灵活性,推荐使用StreamAPI实现。497 收藏