NO.1 不要在常量和变量中出现易混淆的字母
给long类型的变量赋值时,将长整型变量的标示字母“l”进行大写。
NO.2 莫让常量蜕变成变量
这种常量的定义方式不可取,常量就是常量,务必让常量的值在运行期保持不变
NO.3 三元操作符的类型务必一致
这段代码的结果是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