// 判斷是否閏年,如果是,返回true,否則,返回false,

public boolean isLeapYear(int year)
{
//MAX_YEAR,MIN_YEAR分別代表可以判斷的最大年最小年

if(year< MIN_YERA || year> MAX_YEAR)
{
throw new Exception("判斷的年份不在判斷范圍內(nèi)!");
}
//覺得精練的地方就在下一行

if((year&3)==0)
{
return ((year%400==0) || (year%100!=0));
}
return false;
}
寫到這里,我想起來“java程序員變態(tài)32題”的其中一題了,題目是這么說的:請寫出利用 2 最有效率得到 8的代碼?答案是 2<<2。
位操作一直是計算機最擅長的事情,可自從有了高級編程語言之后,我?guī)缀醢阉恕,F(xiàn)在明白java要保留位操作的原因了,覺得是效率~
回到這個方法上,一般的人代碼寫得邏輯清晰,也能實現(xiàn)功能,可是像這么簡潔高效的代碼才是程序員夢寐以求的!我從此不敢小瞧 編碼 。
===> if (0)
所以
return ((year%400==0) || (year%100!=0)); 永遠不被執(zhí)行
準確如下
public boolean isLeapYear(int year){
//MAX_YEAR,MIN_YEAR分別代表可以判斷的最大年最小年
if(year< MIN_YERA || year> MAX_YEAR){
throw new Exception("判斷的年份不在判斷范圍內(nèi)!");
}
//覺得精練的地方就在下一行
if((year&3) ==0){
return ((year%400==0) || (year%100!=0));
}
return false;
}
Associativity
[] . () (method call)
Left to right
! ~ ++ -- + (unary) – (unary) () (cast) new
Right to left
* / %
Left to right
+ -
Left to right
<< >> >>>
Left to right
< <= > >= instanceof
Left to right
== !=
Left to right
&
Left to right
^
Left to right
|
Left to right
&&
Left to right
||
Left to right
?:
Right to left
= += -= *= /= %= &= |= ^= <<= >>= >>>=
Right to left
多謝斧正,已改正