[笔记]改善Java程序的151个建议---第二章 基本类型
博客专区 > jimyao 的博客 > 博客详情
[笔记]改善Java程序的151个建议---第二章 基本类型
jimyao 发表于2年前
[笔记]改善Java程序的151个建议---第二章 基本类型
  • 发表于 2年前
  • 阅读 4
  • 收藏 0
  • 点赞 1
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

第二章 基本类型
8个:byte,char,short,int,long,float,double,boolean

建议21;用偶判断,不用奇判断
public class Client{
     public static void main(String[] args){
          Scanner input = new Scanner(System.in);
          System.out.print("请输入多个数字判断奇偶: ");
          while(input.hasNextInt()){
               int i = input.nextInt();
               String str = i + "->" + (i%2 == 0 ? "奇数" : "偶数");  //用偶数判断
               System.out.println(str);
          }
     }
}

建议22:用整数类型处理货币
(1)用BigDecimal
(2)用整型。参与运算时候,扩大100倍,转换整形,计算后再除100倍。

建议23:不要让类型默默转换
int越界溢出
主动声明式类型转化
long dis = 1L * SPEED * 60 * 8;

建议24: 边界还是边界
边界测试:0,正最大值,负最小值

建议25:不要让四舍五入亏了一方
银行家舍人算法:
舍去位的数字小于5时候,直接舍去;
舍去位的数值大于等于6时候,进位后舍去
舍去位的数值等于5时候,5后面还有其他数字,则进位后舍去;5后面是0,根据5前一位奇偶性来判断是否需要进位,奇数进位,偶数舍去。
用RoundingMode类的Round模式。
//存款
BigDecimal d = new BigDeciMal(88888);
//利率
BigDecimal r = new BigDeciMal(0.000018);
//计算利息
BigDecimal i = d.multiply(r).setScale(2, RoundingMode.HALF_EVEN);

建议26:提防包装类型的null值
Java引入包装类型(Wrapper Types)解决基本类型的实例化问题。如:Integer
List<Integer> list = new ArrayList<>();
list.add(null);//会报错
加入对null的检查
public static int f(List<Integer list>){
     int count = 0;
     for(Integer i : list)
          count += (i != null) ? i : 0;
     return count;
}

建议27:谨慎包装类型的大小比较
基本数据类型用>,<,=比较
包装类型用compareTo方法比较,包装类型实现了Comparable接口

建议28:优先使用整形池
Integer.valueOf在-128至127之间转换为Integer对象,直接从整形池获得。所以是相等。超出这个范围new一个新Integer对象。
在声明包装对象时候用valueOf生产,而不是通过构造函数生产。
判断对象相等时候,用equals方法。

建议29:优先选择基本类型

建议30:不要随便设置随机种子
java中随机数的产生取决于种子,随机数和种子之间的关系原则;
种子不同,产生不同的随机数
种子相同,即使实例不同也产生相同的随机数。
Random默认种子是System.nanoTime()的返回值
java.util.Random
Math.random

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 17
博文 66
码字总数 27856
×
jimyao
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: