java解惑笔记
今天抽空下了《java解惑》这本书看了一下,确实不错,提出了很多我们平时不会注意的小问题。想想如果不注意说不定会因为一个BUG郁闷个一两天也找不到。以下是总结的笔记,备忘~~
1.判断奇数
i % 2 == 1 在i 为负数时结果为-1,所以使用i % 2 != 0来判断;当有性能要求时使用 (i & 1) != 0。
*在使用%时一定要考虑到操作数的符号的影响!
2.不是所有小数都可以用二进制浮点数来表示(如1.1等)
2.00-1.10 = 0.89999999999
*方法一:使用整型来计算 (200-110)/100 = 0.9
*方法二:new BigDecimal("2.00").subtract(new BigDecimal("1.10")); //必须使用new Decimal(String)这个构造
3.在操作很大的数字时要防止溢出
long a = 24*60*60*1000*1000; //因为是int之间的运算,结果先保存在一个int中再赋给a,导致溢出
long b=24*60*60*1000;
a/b = 5;
*方法:long a = 24L*60*60*1000*1000;
4.在使用条件操作符(?a:b)时,尽量保持a与b的类型一致
5.复合赋值表达式自动将运算的结果转型为左侧变量的类型
相关文档:
package graphic;
import javax.swing.ImageIcon;
import javax.swing.JTree;
import java.awt.Component;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultMutableTreeNode;
/**
*
* @author bianzhiqi
* 具体方法的使用查看DefaultTreeCellRenderer的文档
*/
public c ......
import java.awt.*;
import java.awt.event.*;
public class TestFrame {
Frame fm = new Frame();
public void init(){
fm.setSize(300,300);
Button btn = new Button("ok");
fm.add(btn);
btn.addActionListener(ne ......
定时器类Timer在java.util包中。使用时,先实例化,然后使用实例的schedule(TimerTask task, long delay)方法,设定指定的任务task在指定的延迟delay后执行。定时器任务类TimerTask是抽象类,继承并重写其run()方法,可实现具体任务。
schedule(TimerTask task, Date time)设定指定任务task在指定时间time执行。
cancel ......