Java基础知识陷阱

Java浮点数精确运算陷阱

System.out.println(2.0 - 1.1);

以上结果为0.899999999999999...;

如果需要精确运算,需要使用BigDecimal类进行运算。

BigDecimal a1 = new BigDecimal(Double.toString(2.0));
BigDecimal a2 = new BigDecimal(Double.toString(1.1));
System.out.println(a1.subtract(a2).doublevalue());

Java自增自减陷阱

for(int i = 0; i < 100; i++)
{
    j = j++;
}
System.out.println(j);
结果为j = 0;

这是因为在JVM工作原理中,先执行j++后,再将j++之前的值赋给j,也就是j自加1后,再将0赋值给j,因此在这个代码中执行的结果是j=0。


Java字符和字符串陷阱

System.out.println("a" + "b");
System.out.println('a' + 'b');
System.out.println("a" + 'b');

结果为:
ab
195
ab

原因很简单,字符间的操作是将ASNII码进行操作的。

第三行将字符‘b’强制转换为“b”,然后将字符串拼接。


Java return 与try-finally陷阱

try
{
    return false;
}
finally
{
    return true;
}
结果为:true

这个很简单,在try的return前将会执行finally,finally有return,将会优先return。

try
{
    System.out.println("Hello!");
    System.exit(0);
}
finally
{
    System.out.println("GoodBye!");
}
结果为:Hello!

结果很显而易见,因为遇到System.exit(0),finally将不会再执行

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,622评论 18 399
  • 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?答:可以有多个类,但只能有一个publ...
    岳小川阅读 4,509评论 0 2
  • 一. Java基础部分.................................................
    wy_sure阅读 9,288评论 0 11
  • 今晚是第五期打卡的闭营,热闹非凡、奖励多多,很多小伙伴通过打卡不断的突破自己,大家都收获到很棒,很逼格的证书,也是...
    罗沫沫66阅读 1,180评论 0 0
  • 忙碌的生活让我觉得很美好,找到了那种不费力气谈判的爽点…很棒 每天都很开心,我认识了文婷有一个月了,我们相处的很融...
    墙角一朵小花阅读 3,262评论 0 1

友情链接更多精彩内容