Java 基本語法----進制、運算符
進 制
對於整數,有四種表示方式:
二進制:0,1 ,滿 2 進 1.以 0b 或 0B 開頭。
十進制:0-9 ,滿 10 進 1.
八進制:0-7 ,滿 8 進1. 以數字 0 開頭表示。
十六進制:0-9 及 A-F,滿 16 進1. 以 0x 或 0X開頭表示。此處的A-F不區分大小寫。
所有數字在計算機底層都以二進制形式存在。
計算機以補碼的形式保存所有的整數。
正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。
原碼:直接將一個數值換成二進制數。
反碼:是對原碼按位取反,只是最高位(符號位)保持不變。
Java整數常量默認是int類型,當用二進制定義整數時,其第32位是符號位;當是long類型時,二進制默認占64位,第64位是符號位
進制的基本轉換
十進制二進制互轉
十進制轉成二進制 除以2取余數
二進制轉成十進制 乘以2的冪數
二進制八進制互轉
二進制十六進制互轉
十進制八進制互轉
十進制十六進制互轉
運算符
運算符分類
算術運算符
賦值運算符
比較運算符(關系運算符)
邏輯運算符
位運算符
三元運算符
算數運算符
//取模 int r = 10 % 3; System.out.println(r); //自增 int i = 10; //i++: 先取 i 值, 在運算(i = i + 1) int j = i++; System.out.println(j); j= i; System.out.println(j); int m = 100; //++m: 先運算(m = m + 1), 後取值 int n = ++m; System.out.println(n); n = m; System.out.println(n); //+: 字符串相加 String str = "abc"; String str2 = "def"; String str3 = str + str2; //abcdef System.out.println(str3); //如果對負數取模,可以把模數負號忽略不記System.out.println(10 % -3); //1 //如果被模的數是負數, 則先對其絕對值進行取模運算, 結果在加上一個負號 System.out.println(-10 % 3); //-1 System.out.println(-10 % -3); //-1 //整數之間做除法時,只保留整數部分而舍棄小數部分 int x=3510; x= x / 1000 * 1000; System.out.println(x); //3000 //+ 除字符串相加功能外,還能把非字符串轉換成字符串 String str4 = "1"; System.out.println(str4 + 100); //1100
如果對負數取模,可以把模數負號忽略不記,如:5%-2=1。 但被模數是負數就另當別論。
對於除號“/”,它的整數除和小數除是有區別的:整數之間做除法時,只保留整數部分而舍棄小數部分。 例如:int x=3510;x=x/1000*1000; x的結果是3000
“+”除字符串相加功能外,還能把非字符串轉換成 字符串.例如:System.out.println("5+5="+5+5); //打印結果是5+5=55
賦值運算符
符號:=
擴展賦值運算符: +=, -=, *=, /=, %=
x += 1000; // x = x + 1000; System.out.println(x); //4000
比較運算符
//比較運算符 System.out.println(x >= 1000); //true
註1:比較運算符的結果都是boolean型,也就是要麽是true,要麽是false。
註2:比較運算符“==”不能誤寫成“=” 。
邏輯運算符
//邏輯運算符 int a = 10; int b = 20;
邏輯運算符用於連接布爾型表達式,在Java中不可以寫成3<x<6,應該寫成x>3 && x<6 。
“&”和“&&”的區別
單&時,左邊無論真假,右邊都進行運算;
雙&時,如果左邊為真,右邊參與運算,如果左邊為假,那麽右邊不參與運算。
和“||”的區別同理,雙或時,左邊為真,右邊不參與運算。
異或( ^ )與或( | )的不同之處是:對於 ^ 而言,當左右都為true時,結果為false。
// &: 與 運算符, 當且僅當兩邊都為真時, 表達式的結果為 true System.out.println(a > 5 & b < 30); //true System.out.println(a > 15 & b < 30); //false System.out.println(a > 5 & b < 20); //false // |: 或 運算符, 當且僅當兩邊都為假時, 表達式結果為 false System.out.println(a > 5 | b < 30); //true System.out.println(a > 15 | b < 3); //false System.out.println(a > 5 | b < 20); //true // ^: 異或 運算符, 當且僅當兩邊的表達式的結果不同時為 true, 否則為 false System.out.println(a > 5 ^ b < 30); //false System.out.println(a > 15 ^ b < 3); //false System.out.println(a > 5 ^ b < 20); //true // !: 取反 運算符. System.out.println(!(a > 5)); //false //短路邏輯運算符: &&, ||. 若 短路邏輯運算符前的表達式已經可以確定整個表達式的值, //則不再判斷 短路運算符後邊的表達式的值 System.out.println(a > 15 && (10 / 0 == 1)); //false
位運算符
位運算是直接對二進制進行運算
//位運算符 int c = 3; //0000 0011 //左移運算符 System.out.println(c << 2); //0000 1100 -> 12 3 * (2*2) = 12 //右移運算符 System.out.println(c >> 2); //0000 0000 -> 0 3 / (2 * 2) = 0; //無符號右移運算符 int d = -1; System.out.println(d >> 1); //-1 System.out.println(d >>> 1); //-1 //& 位運算符 /* * 0000 0010 * & 0000 0011 * ___________ * 0000 0010 */ System.out.println(2 & 3); //2
三元運算符
格式:
(條件表達式)?表達式1:表達式2;
如果條件為true,運算後的結果是表達式1;
如果條件為false,運算後的結果是表達式2;
//三元運算符 String e = d > 3 ? "d > 3" : "d <= 3"; System.out.println(e); // d <= 3 //編譯不能通過, 因為 : 的兩邊必須是表達式, 且必須是類型兼容的表達式 //d > 3 ? System.out.println("a") : System.out.println("b"); boolean res = d > 3 ? false : ">3";
Java 基本語法----進制、運算符