《Java解惑》是一本很经典的Java书籍,从图书馆借来剖析,将对所学内容以博文形式发表,供学习共享。
此文选自《Java解惑》,电子书免费下载链接:
中文版http://download.csdn.net/source/3260742
英文版http://download.csdn.net/source/3260753
由于在编程中的疏忽很容易造成奇偶的判断错误,造成程序运行结果抛bug,本博文将通过实例解析此类问题。
/**
* @param args
* @author ShenkXiao
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 知识关键点: 在int数值中有一半是负数,若根据除2判断其余数是否为1来定奇偶会有1/4的时候返回错误的判断。
//调用错误方法
for(int i=-2;i<3;i++){
System.out.println("***************调用错误方法***************");
System.out.println(i+"为奇数:"+ShenkxiaoTestisOdd.isOdd(i));
System.out.println("***************调用参考方法一***************");
System.out.println(i+"为奇数:"+ShenkxiaoTestisOdd.isOddCorrect1(i));
System.out.println("***************调用参考方法二***************");
System.out.println(i+"为奇数:"+ShenkxiaoTestisOdd.isOddCorrect2(i));
System.out.println("####################################################");
}
}
//错误的判断奇偶数的方法
public static boolean isOdd(int i){
return i%2==1;
}
//参考方法一 :
public static boolean isOddCorrect1(int i){
return i%2!=0;
}
//参考方法二 :
//如果你正在一个性能临界(performance-critical)环境中使用isOdd方法,那么用位操作符AND(&)来替代取余操作符号会显得更好。
public static boolean isOddCorrect2(int i){
return (i&1)!=0;
}
}
以下是运行结果截图: