Ⅰ java中的<<是什麼意思
<<:是邏輯左移,右邊補0,符號位和其他位一樣要移動。
數學意義:在數字沒有溢出的前提下,對於正數和負數,左移一位都相當於乘以2的1次方,左移n位就相當於乘以2的n次方。
計算:3 << 2
3 << 2,則是將數字3左移2位
1、首先把3轉換為二進制數字0000 0000 0000 0000 0000 0000 0000 0011
2、然後把該數字高位(左側)的兩個零移出,其他的數字都朝左平移2位,最後在低位(右側)的兩個空位補零。
3、則得到的最終結果是0000 0000 0000 0000 0000 0000 0000 1100,則轉換為十進制是12。
(1)java數學計算表達式擴展閱讀
Java語言支持的賦值運算符
=:簡單的賦值運算符,將右操作數的值賦給左側操作數。如C = A + B將把A + B得到的值賦給C。
+ =:加和賦值操作符,它把左操作數和右操作數相加賦值給左操作數。如C + = A等價於C = C + A。
- =:減和賦值操作符,它把左操作數和右操作數相減賦值給左操作數。如C - = A等價於C = C -
A。
* =:乘和賦值操作符,它把左操作數和右操作數相乘賦值給左操作數。如 C * = A等價於C = C * A。
/ =:除和賦值操作符,它把左操作數和右操作數相除賦值給左操作數。如 C / = A等價於C = C / A。
(%)=:取模和賦值操作符,它把左操作數和右操作數取模後賦值給左操作數。如 C%= A等價於C = C%A。
<< =:左移位賦值運算符。如C << = 2等價於C = C << 2。
>> = :右移位賦值運算符。如C >> = 2等價於C = C >> 2。
&= :按位與賦值運算符。如 C&= 2等價於C = C&2。
^ =:按位異或賦值操作符。如C ^ = 2等價於C = C ^ 2。
| =:按位或賦值操作符。如C | = 2等價於C = C | 2。
Ⅱ java三目運算符
1、三目運算符 (表達式1)?(表達式2):(表達式3),計算方法是這樣的:表達式1是一個邏輯表達式,如果其值為true,則整個表達式的值為表達式2的值,否則為表達式3的值
2、例子:int i = (5 > 3) ? (5 + 3) : (5 - 3);結果為i = 8.因為5 > 3為true,所以i = 5 + 3.
3、根據三目運算符的從右到左的結合性,我是這樣劃分的
year > a.year ? 1 : (year < a.year ? -1 : (month > a.month ? 1 : (month < a.month ? -1 : (day > a.day ? 1 : (day < a.day ? -1 : 0)))));
所以應該從最右邊的那個表達式開始計算,結果應該是1、0、-1中的一個值。
以上純屬個人理解。沒搞清楚你這個演算法到底是什麼意義。。。。還有你的compare()方法不能聲明為靜態。