我是靠谱客的博主 外向煎饼,最近开发中收集的这篇文章主要介绍java error 常见_Java常见错误合集,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

null 转基本类型

@Data

@NoArgsConstructor

@AllArgsConstructor

static class OneClass {

private Double value;

}

@Test

public void nullToPrimitive() {

OneClass oneClass = new OneClass(1.0);

double value = oneClass.getValue();

System.out.println(value);

OneClass oneClass2 = new OneClass();

value = oneClass2.getValue();

System.out.println(value);

}

null指针异常

String.format中输出%

@Test

public void formatTest() {

String str = "the fee rage is %.2f%%";

System.out.println(String.format(str, 1.2));

}

the fee rage is 1.20%

google cache null 指针

@Test

public void nullTest1() {

LoadingCache cache = CacheBuilder.newBuilder().expireAfterWrite(1, TimeUnit.HOURS).build(

new CacheLoader() {

@Override

public String load(String key) throws Exception {

return null;

}

});

try {

System.out.println(cache.get("str"));

} catch (Exception e) {

log.error("nullTest1 {}", e.getMessage(), e);

}

}

报错:nullTest1 CacheLoader returned null for key str.

修改后

@Test

public 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 {

System.out.println(cache.get("str").isPresent() ? cache.get("str") : null);

} catch (Exception e) {

log.error("nullTest2 {}", e.getMessage(), e);

}

}

输出:null

double相加精度问题

@Test

public void doubleAdd() {

System.out.println(0.3 + 0.3 + 0.3 + 0.1);

System.out.println(Double.compare(1.0, 0.3 + 0.3 + 0.3 + 0.1) == 0);

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);

}

输出:

0.9999999999999999

false

true

contains 参数是object 类型不同

@Test

public void containsTest() {

Set set = Sets.newHashSet((byte) 1, (byte) 2, (byte) 3);

System.out.println(set.contains(1));

System.out.println(set.contains((byte) 1));

}

输出:

false

true

Arrays.asList

Integer[] integers = {0, 1, 2};

List list = Arrays.asList(integers);

System.out.println(list);

integers[0] += 1;

System.out.println(list);

输出:

[0, 1, 2]

[1, 1, 2]

Arrays.asList 产生的ArrayList,它内部的数组直接沿用了这个数组,所以数组的修改,ArrayList也会相应的修改

这个list不支持add和remove,支持set和get

源码如下

public static List asList(T... a) {

return new ArrayList<>(a);

}

private static class ArrayList extends AbstractList

implements RandomAccess, java.io.Serializable

{

private static final long serialVersionUID = -2764017481108945198L;

private final E[] a;

ArrayList(E[] array) {

a = Objects.requireNonNull(array);

}

}

未完待续……

最后

以上就是外向煎饼为你收集整理的java error 常见_Java常见错误合集的全部内容,希望文章能够帮你解决java error 常见_Java常见错误合集所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部