java中的一些陷阱

来源:互联网 发布:手机淘宝 国际版 编辑:程序博客网 时间:2024/05/18 03:52
1、判断不是否奇数: 不能i%2==1, 注意负数;应该是i%2!=0;
2. 2.0-1.1 的值, 因为计算机无法表示double的1.1,
3、
long a = 24*60*60*1000*1000; //微秒
long b = 24*60*60*1000; //毫秒
a/b的值不是1000, 因为24*60*60*1000*1000是int*int*int*int*int,再把int值赋给long的a,但是int值越界。 更正:
long a = 24L*60*60*1000*1000; //微秒
long b = 24L*60*60*1000; //毫秒
计算long时要加L
4、 . 要用的转义字符 \\.
5. 慎用单引号,因为char有可能转为int
6、j=j++; j不会自增
7、注意运算符% *的优先级,实在不清楚就加括号
public static void main(String[] args) {int minutes = 0;for(int ms = 0;ms<60*60*1000;ms++) {if(ms%60*1000==0) {minutes ++;}}System.out.println(minutes);}
先计算m%60,再计算*了,可能得不到预期的结果
8、finally不一定会执行,程序退出就不执行finally了(程序退出:system.exit(0))

9、遍历集合用Iterator, 不要用枚举element
10、response.getWriter(), response.getOutputStream()不能同时用

11. super()和this()区别:
this():当前类的无参构造方法, super():父类的无参构造方法。
12. Overload与Override的区别:
Overload是编译时多态,返回值可以相同也可以不相同;
Override是运行时多态, 作用域要大于等于父类
13. final类的特点: 不能再被继承, 里面的方法不能被重写;里面变量都是static
14. 得到Class的三种方法:1. 像 String.getClass(); 2.Class.forName("");3.有些类如Integer有特殊的就去得到
char型中可以保存中文汉字, 因为char型可以保存unicode, unicode包括汉字, 2个字节
15. sleep()和wait()区别: sleep()不会放弃对象锁,时间到了自动醒,接着执行;wait()会放弃对象锁, 要等同一个对象的notify方法才能醒。
16. include两种实现方式区别:
<%include%> 静态包含
<jsp:include ></jsp:indlude> 动态包含
1 0