博客
关于我
Java常见错误合集
阅读量:423 次
发布时间:2019-03-06

本文共 2642 字,大约阅读时间需要 8 分钟。

null转基本类型

在Java中,null是一个特殊值,表示缺失或未赋值。将null转换为基本类型时,需要注意类型的兼容性。以下示例展示了如何将null转换为double类型:

@Data@AllArgsConstructorstatic class OneClass {    private Double value;}@Testpublic void nullToPrimitive() {    OneClass oneClass = new OneClass(1.0);    double value = oneClass.getValue(); // value是1.0    System.out.println(value); // 输出1.0    OneClass oneClass2 = new OneClass();    value = oneClass2.getValue(); // value是null    System.out.println(value); // 输出null}

运行该测试方法会输出:

1.0
null

字符串格式化中的百分号问题

在Java中,使用String.format或format方法格式化字符串时,需要注意格式说明符的使用。以下示例显示了如何正确格式化包含百分比的字符串:

@Testpublic void formatTest() {    String str = "the fee range is %.2f%%";    System.out.println(String.format(str, 1.2));}

运行该测试方法会输出:

the fee range is 1.20%

Google Cache中的null指针问题

在使用Google的Cache库时,需要注意缓存的加载方法。如果返回null值,可能会导致缓存无法正常获取数据。以下是修正后的测试方法:

@Testpublic void nullTest2() {    LoadingCache
> cache = CacheBuilder.newBuilder() .expireAfterWrite(1, TimeUnit.HOURS) .build(new CacheLoader
>() { @Override public Optional
load(String key) throws Exception { return Optional.ofNullable(null); } }); try { Optional
result = cache.get("str"); System.out.println(result.isPresent() ? result.get() : null); } catch (Exception e) { log.error("nullTest2 {}", e.getMessage(), e); }}

运行该测试方法会输出:

null

double相加的精度问题

在Java中,double类型的精度问题可能会导致结果看起来不准确。以下示例展示了如何验证double相加的精度:

@Testpublic void doubleAdd() {    System.out.println(0.3 + 0.3 + 0.3 + 0.1); // 输出0.9999999999999999    System.out.println(Double.compare(1.0, 0.3 + 0.3 + 0.3 + 0.1) == 0); // 输出false    BigDecimal bigDecimal1 = BigDecimal.valueOf(0.3)            .add(BigDecimal.valueOf(0.3))            .add(BigDecimal.valueOf(0.3))            .add(BigDecimal.valueOf(0.1));    BigDecimal bigDecimal2 = BigDecimal.valueOf(1.0);    System.out.println(bigDecimal1.compareTo(bigDecimal2) == 0); // 输出true}

运行该测试方法会输出:

0.9999999999999999
false
true

集合contains方法的类型问题

在Java中,集合的contains方法对类型比较较为严格。以下示例展示了如何测试集合中的元素是否匹配:

@Testpublic void containsTest() {    Set
set = Sets.newHashSet((byte) 1, (byte) 2, (byte) 3); System.out.println(set.contains(1)); // 输出false System.out.println(set.contains((byte) 1)); // 输出true}

运行该测试方法会输出:

false
true

Arrays.asList的列表修改问题

Arrays.asList方法返回的列表是基于原数组的不可变列表。以下示例展示了如何避免修改源数组的问题:

Integer[] integers = {0, 1, 2};List
list = Arrays.asList(integers);System.out.println(list); // 输出[0, 1, 2]integers[0] += 1;System.out.println(list); // 输出[1, 1, 2]

输出结果为:

[0, 1, 2]
[1, 1, 2]

转载地址:http://cfbuz.baihongyu.com/

你可能感兴趣的文章
python三大库之--numpy(一)
查看>>
python三大库之--numpy(二)
查看>>
python上的字无效字符_标识中的无效字符
查看>>
python下用decode和encode 中文转码
查看>>
Python下调用Linux的Shell命令
查看>>
Python接口自动化测试实战系列
查看>>
python下载_安装_配置_以及第一行python程序---python工作笔记009
查看>>
Python不协调机器人消息.内容
查看>>
Python与C#之间内存共享互传信息
查看>>
python与c语言混合编程_你试过C语言和Python一起混合编程吗?两者相加不是已经无敌了!...
查看>>
python与excel
查看>>
Python与Excel的完美邂逅:深入浅出,手把手教你轻松玩转Excel数据操作
查看>>
python与flask_Python编程中flask的简介与简单使用
查看>>
python与图灵机器人交互(WXPY版本)
查看>>
python与运算符_python运算符
查看>>
python两个列表获取交集,并集,差集
查看>>
python两个字典合并,两个list合并
查看>>
Python两个版本共存时,命令行升级pip
查看>>
Python两个版本共存时,怎么验证是否安装成功 scrapy
查看>>
Python两个版本共存时,通过pip安装Scrapy
查看>>