java基础知识陷阱
来源:互联网 发布:手机免费看书软件 编辑:程序博客网 时间:2024/06/16 23:05
1.java浮点数精确运算陷阱:
System.out.println(2.0-1.1);
运算结果是:0.8999999999999999
如果需要精确运算,需要使用BigDecimal类进行运算:
BigDecimal a1 = new BigDecimal(Double.toString(2.0));BigDecimal a2 = new BigDecimal(Double.toString(1.1));System.out.println(a1.subtract(a2).doubleValue());
2.java自增自减陷阱
int j = 0;for(int i=0;i<100;i++){ j = j++;}System.out.println("j="+j);
结果为:j=0
这是因为在JVM工作原理中,先执行j++后,再将j++之前的值赋给j,也就是j自加1后,再将0赋值给j,因此在这个代码中执行的结果是j=0。
3.java字符和字符串陷阱
System.out.println("a" + "b");System.out.println('a' + 'b');System.out.println("a" + 'b');
结果为:
ab
195
ab
原因很简单,字符间的操作是将ASNII码进行操作的。第三行将字符‘b’转换为“b”,然后将字符串拼接。
4.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将不会再执行。
0 0
- Java基础知识陷阱(十)
- java基础知识陷阱
- java基础知识陷阱
- Java 陷阱
- java陷阱
- Java面试中的陷阱
- Java面试中的陷阱
- Java面试中的陷阱
- Java面试中的陷阱
- Java面试中的陷阱
- Java 面试中的陷阱
- Java 面试中的陷阱
- Java 面试中的陷阱
- Java 面试中的陷阱
- Java 面试中的陷阱
- Java面试中的陷阱
- Java面试中的陷阱
- java编程陷阱
- Hibernate入门
- ButterKnife插件使用
- nefu 84(拓展欧几里德)
- LeetCode 111. Minimum Depth of Binary Tree
- sharepoint 2016 学习系列篇(25)-文档库应用篇-(7)列表视图设置
- java基础知识陷阱
- servlet
- sort,qsort排序
- shell中各种括号的作用()、(())、[]、[[]]、{}
- 植物的知识
- 一个产品菜鸟的起飞之路
- Java7在数字中使用下划线
- E - Internet Service Providers
- JAVASE总结--03(方法、if-else、switch-case)