java中的一些陷阱

xiaoxiao2021-02-28  94

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`*1000==0) { minutes ++; } } System.out.println(minutes); } 先计算m`,再计算*了,可能得不到预期的结果 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> 动态包含
转载请注明原文地址: https://www.6miu.com/read-81472.html

最新回复(0)