打字猴:1.70043849e+09
1700438490
1700438491 若两个操作数是明确类型的表达式(比如变量),则按照正常的二进制数字来转换,int类型转换为long类型,long类型转换为float类型等。
1700438492
1700438493 若两个操作数中有一个是数字S,另外一个是表达式,且其类型标示为T,那么,若数字S在T的范围内,则转换为T类型;若S超出了T类型的范围,则T转换为S类型(可以参考“建议22”,会对该问题进行展开描述)。
1700438494
1700438495 若两个操作数都是直接量数字(Literal)[1],则返回值类型为范围较大者。
1700438496
1700438497 知道是什么原因了,相应的解决办法也就有了:保证三元操作符中的两个操作数类型一致,即可减少可能错误的发生。
1700438498
1700438499 [1]“Literal”也译作“字面量”。
1700438500
1700438501
1700438502
1700438503
1700438504 编写高质量代码:改善Java程序的151个建议 [:1700438071]
1700438505 编写高质量代码:改善Java程序的151个建议 建议4:避免带有变长参数的方法重载
1700438506
1700438507 在项目和系统的开发中,为了提高方法的灵活度和可复用性,我们经常要传递不确定数量的参数到方法中,在Java 5之前常用的设计技巧就是把形参定义成Collection类型或其子类类型,或者是数组类型,这种方法的缺点就是需要对空参数进行判断和筛选,比如实参为null值和长度为0的Collection或数组。而Java 5引入变长参数(varags)就是为了更好地提高方法的复用性,让方法的调用者可以“随心所欲”地传递实参数量,当然变长参数也是要遵循一定规则的,比如变长参数必须是方法中的最后一个参数;一个方法不能定义多个变长参数等,这些基本规则需要牢记,但是即使记住了这些规则,仍然有可能出现错误,我们来看如下代码:
1700438508
1700438509 public class Client{
1700438510
1700438511 //简单折扣计算
1700438512
1700438513 public void calPrice(int price, int discount){
1700438514
1700438515 float knockdownPrice=price*discount/100.0F;
1700438516
1700438517 System.out.println(“简单折扣后的价格是:”+formateCurrency(knockdownPrice));
1700438518
1700438519 }
1700438520
1700438521 //复杂多折扣计算
1700438522
1700438523 public void calPrice(int price, int……discounts){
1700438524
1700438525 float knockdownPrice=price;
1700438526
1700438527 for(int discount:discounts){
1700438528
1700438529 knockdownPrice=knockdownPrice*discount/100;
1700438530
1700438531 }
1700438532
1700438533 System.out.println(“复杂折扣后的价格是:”+formateCurrency(knockdownPrice));
1700438534
1700438535 }
1700438536
1700438537 //格式化成本的货币形式
1700438538
1700438539 private String formateCurrency(float price){
[ 上一页 ]  [ :1.70043849e+09 ]  [ 下一页 ]