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

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

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

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