Java 编码小技巧
1、锁与事务#
获取锁与释放锁不能放在事务里面。
先释放锁再提交事务会导致脏数据。
2、Consumer 和 Supplier#
- Consumer表示一个操作,其接收一个参数且没有返回值
@Test
public void consumerTest() {
List<String> fruits = Arrays.asList("apple", "banana", "orange");
print(fruits, o -> System.out.println(o));
print(fruits, System.out::println);
}
public void print(List<String> fruits, Consumer<String> consumer) {
for (String fruit: fruits) {
consumer.accept(fruit);
}
}
- Supplier表示结果的提供者,其返回一个对象且不接收任何参数
@Test
public void supplier() {
Supplier<String> now = () -> {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
return dtf.format(LocalDateTime.now());
};
System.out.println(now.get());
}
3、BigDecimal#
- 为避免精度无法表示问题
使用new BigDecimal("0.1")
接收字符类型,使用BigDecimal.valueOf(0.1)
接收数字类型 - 转换成字符串
toPlainString()
- BigDecimal在列表中的累加
@Test
public void decimalTest () {
List<BigDecimal> cardValid = new LinkedList<>();
cardValid.add(new BigDecimal("0.1"));
cardValid.add(BigDecimal.valueOf(0.1));
BigDecimal totalPrice = cardValid.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
System.out.println(totalPrice.toPlainString());
}
4、拼接字符#
- 使用StringJoiner进行拼接,创建时需指定拼接的符号
StringJoiner sj = new StringJoiner(",");
sj.add("a");
sj.add("b");
// 出来的结果是 a,b
String result = sj.toString();
- 使用占位符格式化字符串
String name = "椰羊";
Integer age = 3500;
// %s 代表占位符,按参数顺序进行填充
String result = String.format("姓名:%s,年龄:%s", name, age);
作者:revil
出处:https://www.cnblogs.com/revil/p/16730524.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库