1700438410
1700438411
long i=1l;
1700438412
1700438413
System.out.println(“i的两倍是:”+(i+i));
1700438414
1700438415
}
1700438416
1700438417
}
1700438418
1700438419
肯定有人会说:这么简单的例子还能出错?运行结果肯定是22!实践是检验真理的唯一标准,将其拷贝到Eclipse中,然后Run一下看看,或许你会很奇怪,结果是2,而不是22,难道是Eclipse的显示有问题,少了个“2”?
1700438420
1700438421
因为赋给变量i的数字就是“1”,只是后面加了长整型变量的标示字母“l”而已。别说是我挖坑让你跳,如果有类似程序出现在项目中,当你试图通过阅读代码来理解作者的思想时,此情此景就有可能会出现。所以,为了让您的程序更容易理解,字母“l”(还包括大写字母“O”)尽量不要和数字混用,以免使阅读者的理解与程序意图产生偏差。如果字母和数字必须混合使用,字母“l”务必大写,字母“O”则增加注释。
1700438422
1700438423
注意 字母“l”作为长整型标志时务必大写。
1700438424
1700438425
1700438426
1700438427
1700438429
编写高质量代码:改善Java程序的151个建议 建议2:莫让常量蜕变成变量
1700438430
1700438431
常量蜕变成变量?你胡扯吧,加了final和static的常量怎么可能会变呢?不可能二次赋值的呀。真的不可能吗?看我们神奇的魔术,代码如下:
1700438432
1700438433
public class Client{
1700438434
1700438435
public static void main(String[]args){
1700438436
1700438437
System.out.println(“常量会变哦:”+Const.RAND_CONST);
1700438438
1700438439
}
1700438440
1700438441
}
1700438442
1700438443
/*接口常量*/
1700438444
1700438445
interface Const{
1700438446
1700438447
//这还是常量吗?
1700438448
1700438449
public static fnal int RAND_CONST=new Random().nextInt();
1700438450
1700438451
}
1700438452
1700438453
RAND_CONST是常量吗?它的值会变吗?绝对会变!这种常量的定义方式是极不可取的,常量就是常量,在编译期就必须确定其值,不应该在运行期更改,否则程序的可读性会非常差,甚至连作者自己都不能确定在运行期发生了何种神奇的事情。
1700438454
1700438455
甭想着使用常量会变的这个功能来实现序列号算法、随机种子生成,除非这真的是项目中的唯一方案,否则就放弃吧,常量还是当常量使用。
1700438456
1700438457
注意务必让常量的值在运行期保持不变。
1700438458
1700438459
[
上一页 ]
[ :1.70043841e+09 ]
[
下一页 ]