1700440232
1700440233
long dis2=LIGHT_SPEED*60L*8;
1700440234
1700440235
60L是一个长整型,乘出来的结果也是一个长整型(此乃Java的基本转换规则,向数据范围大的方向转换,也就是加宽类型),在还没有超过int类型的范围时就已经转换为long型了,彻底解决了越界问题。在实际开发中,更通用的做法是主动声明式类型转化(注意不是强制类型转换),代码如下:
1700440236
1700440237
long dis2=1L*LIGHT_SPEED*60*8;
1700440238
1700440239
既然期望的结果是long型,那就让第一个参与运算的参数也是long型(1L)吧,也就是明说“嗨,我已经是长整型了,你们都跟着我一起转为长整型吧”。
1700440240
1700440241
注意 基本类型转换时,使用主动声明方式减少不必要的Bug。
1700440242
1700440243
1700440244
1700440245
1700440247
编写高质量代码:改善Java程序的151个建议 建议24:边界,边界,还是边界
1700440248
1700440249
某商家生产的电子产品非常畅销,需要提前30天预订才能抢到手,同时它还规定了一个会员可拥有的最多产品数量,目的是防止囤积压货肆意加价。会员的预定过程是这样的:先登录官方网站,选择产品型号,然后设置需要预订的数量,提交,符合规则即提示下单成功,不符合规则提示下单失败。后台的处理逻辑模拟如下:
1700440250
1700440251
public class Client{
1700440252
1700440253
//一个会员拥有产品的最多数量
1700440254
1700440255
public final static int LIMIT=2000;
1700440256
1700440257
public static void main(String[]args){
1700440258
1700440259
//会员当前拥有的产品数量
1700440260
1700440261
int cur=1000;
1700440262
1700440263
Scanner input=new Scanner(System.in);
1700440264
1700440265
System.out.print(“请输入需要预定的数量:”);
1700440266
1700440267
while(input.hasNextInt()){
1700440268
1700440269
int order=input.nextInt();
1700440270
1700440271
//当前拥有的与准备订购的产品数量之和
1700440272
1700440273
if(order>0&&order+cur<=LIMIT){
1700440274
1700440275
System.out.println(“你已经成功预定的”+order+“个产品!”);
1700440276
1700440277
}else{
1700440278
1700440279
System.out.println(“超过限额,预订失败!”);
1700440280
1700440281
}
[
上一页 ]
[ :1.700440232e+09 ]
[
下一页 ]