對於整數,有四種表示方式:
二進制: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不區分大小寫。java
全部數字在計算機底層都以二進制形式存在。spa
計算機以補碼的形式保存全部的整數。3d
正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。blog
原碼:直接將一個數值換成二進制數。字符串
反碼:是對原碼按位取反,只是最高位(符號位)保持不變。編譯
Java整數常量默認是int類型,當用二進制定義整數時,其第32位是符號位;當是long類型時,二進制默認佔64位,第64位是符號位class
byte 的範圍:-128 ~ 127擴展
十進制 二進制互轉
十進制轉成二進制 除以2取餘數
二進制轉成十進制 乘以2的冪數二進制
15 = 1 * 2^0 + 1 * 2^1 + 1 * 2^2 + 1 * 2^3方法
相似的方法,能夠進行下面的互轉
二進制 八進制互轉
二進制 十六進制互轉
十進制 八進制互轉
十進制 十六進制互轉
注意:
若是對負數取模,能夠把模數負號忽略不記,如:5%-2=1。 但被模數是負數就另當別論。
對於除號「/」,它的整數除和小數除是有區別的:整數之間作除法時,只保留整數部分而捨棄小數部分。 例如:int x=3510;x=x/1000*1000; x的結果是?
「+」除字符串相加功能外,還能把非字符串轉換成 字符串.例如:System.out.println("5+5="+5+5); //打印結果是?
符號:=
擴展賦值運算符: +=, -=, *=, /=, %=
注1:比較運算符的結果都是boolean型,也就是要麼是true,要麼是false。
注2:比較運算符「==」不能誤寫成「=」 。
邏輯運算符用於鏈接布爾型表達式,在Java中不能夠寫成3<x<6,應該寫成x>3 && x<6 。
「&」和「&&」的區別:
單&時,左邊不管真假,右邊都進行運算;
雙&時,若是左邊爲真,右邊參與運算,若是左邊爲假,那麼右邊不參與運算。
和「||」的區別同理,雙或時,左邊爲真,右邊不參與運算。
異或( ^ )與或( | )的不一樣之處是:對於 ^ 而言,當左右都爲true時,結果爲false。
位運算是直接對二進制進行運算
格式:(條件表達式)?表達式1:表達式2;
若是條件爲true,運算後的結果是表達式1;
若是條件爲false,運算後的結果是表達式2;
package com.uncleyong; public class TestOperator { public static void main(String[] args) { //取模 int r = 10 % 3; System.out.println(r); //1 //自增 int i = 10; //i++: 先取 i 值, 在運算(i = i + 1) int j = i++; System.out.println(j); System.out.println(i); int m = 100; //++m: 先運算(m = m + 1), 後取值 int n = ++m; System.out.println(n); System.out.println(m); //+: 字符串相加 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 //邏輯運算符 int a = 10; int b = 20; // &: 與 運算符, 當且僅當兩邊都爲真時, 表達式的結果爲 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); //2147483647 //& 位運算符 /* * 0000 0010 * & 0000 0011 * ___________ * 0000 0010 */ System.out.println(2 & 3); //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"); String res = d > 3 ? ">3" : "<=3"; } }