看书的时候发现原书确实比较烦,当然,这个跟我看得匆忙也有关系。所以这里的是一些概括:
a) 奇数性:int i; i%2 ==1这样的判断是不对的,因为int还有负数存在;用i&1 != 0比较好。这一点提示我们在为一个数值型参数传递负值、零和正数时,都需要检查是否正确。
b) Double减法:System.out.println(2.00-1.10),这样的表达式打印时为0.899999999999(没数一共几个9)。 所以浮点数对于货币计算是非常不合适的。可以使用BigDecimal代替(需要使用BigDecimal(String)构造器,不能使用BigDecimal(double)构造;后者还是会有误差。总之,需要精确答案的地方,避免使用float和double,对于货币计算,要使用int、long和BigDecimal。
c) 长整除和初级加法:1。防止溢出 2。long类型字面常量中,末尾最好写大写的L
d) 十六进制:混合类型计算应尽量避免
e) 多重转型:对于变量转型,如果最初的数值类型是有符号的,就执行符号扩展;而如果是char,则必执行零扩展。
f) 互换内容:。。。
g) 三元运算符boolean?a:b:a和b的类型不一致将导致错误,b的类型将自动被转化为a的
h) x+=i 合法而x = x+i不合法:x和i类型不同时,前者可以自动转换,后者则需要显式转化(否则会报错,个人认为这在C应该算警告最多了。)
i) x = x+i 合法而x+=i不合法:+=操作符要求两侧都是
简单类型,但是String例外,它可以出现在+=的左边。所以当x为Object对象,i为String对象时,本条目成立。v