Java Puzzlers——表达式

看书的时候发现原书确实比较烦,当然,这个跟我看得匆忙也有关系。所以这里的是一些概括:

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值