java151和152_每天10个编码坑(《编写高质量代码 改善Java程序的151个建议》)

NO.1 不要在常量和变量中出现易混淆的字母

6cead41b5ff8d0500968b23e6586781f.png

给long类型的变量赋值时,将长整型变量的标示字母“l”进行大写。

NO.2 莫让常量蜕变成变量

f0a62775660ecebf01bab50488972013.png

这种常量的定义方式不可取,常量就是常量,务必让常量的值在运行期保持不变

NO.3 三元操作符的类型务必一致

92f717f5bea94f5b910e1a93fb9d9c10.png

这段代码的结果是false,在使用三目运算符时,第一个操作数是int,第二个操作数是double,会默认进行隐式类型转换返回范围最大的数据类型,即double,那么s2的结果实际上是90.0,最终导致结果是false。

那么会有小伙伴提出疑问了,为什么是整形转为浮点,而不是浮点转为整形呢?这就涉及到三目运算符的转换规则:

(1)若两个操作数不可转换,则不做转换,返回值类型为Object

(2)若两个操作数是明确类型的表达式(比如变量),则按照正常的二进制数字来转换,int转为long,long转为float等

(3)若两个操作数中有一个是数字S,另一个是表达式,且其类型标示为T,那么,若数字S在T的范围内,则转换为T类型,若S超出了T的范围,则T转换为S类型

(4)若两个操作数都是直接量数字,则返回值类型为取值范围最大者

所以,为减少错误的产生,要保证三目运算符中的两个操作数类型一致

NO.4 避免带有变长参数的方法重载

public class Client {

//简单折扣计算

public void calPrice(double price, int discount) {

double knockdownPrice = price * discount / 100;

System.out.println("简单折扣后价格:" + formatCurrency(knockdownPrice));

}

//简单折扣计算

public void calPrice(double price, int... discounts) {

double knockdownPrice = price;

for (int discount : discounts) {

knockdownPrice = knockdownPrice * discount / 100;

}

System.out.println("简单折扣后价格:" + formatCurrency(knock

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值