1、數據類型轉換
一、自動類型轉換(隱式)Demo01DataType.javajava
/* 當數據類型不同時,將會發生數據類型轉換, 自動類型轉換(隱式) 一、特色:代碼不須要進行特殊處理,自動完成。 二、規則:數據範圍從小到大。 */ public class Demon01DayaType{ public static viod main(String[] args){ System.out.println(1024);// 這是一個整數,默認是int類型 System.out.println(3.14);// 這是一個浮點數,默認就是double類型 // 左邊是long類型,右邊是默認的int類型,左右不同, //一個等號表明賦值,將右側的int常量,交給左側的long變量進行存儲 //int --> long,符合了數據範圍從小到大的要求。 //這一行代碼發生了自動類型轉換。 long num1 = 100L;//沒有L也是能夠的 System.out.println(num1);// 100 // 左邊是double類型,右邊是float類型,左右不同。 // float --> double,符合從小到大的規則。 // 也發生了自動類型轉換。 double num2 = 2.5F; System.out.println(num2);//2.5 // 左邊是float類型,右邊是long類型,左右不同。 // long --> flaot;範圍是float更大一些,符合從小到大的規則; // 也發生了自動類型轉換。 float num3 = 30L; System.out.println(num3); // 30.3 } }
二、強制類型轉換(顯示)Demo02DataType.javaide
/* 強制類型轉換 1. 特色:代碼須要進行特殊的格式處理,不能自動完成。 2. 格式:範圍小的類型 範圍小的變量名 = (範圍小的類型) 本來範圍大的數據; 注意事項: 1. 強制類型轉換通常不推薦使用,由於有可能發生精度損失、數據溢出。 2. byte/short/char這三種類型均可以發生數學運算,例如加法「+」. 3. byte/short/char這三種類型在運算的時候,都會被首先提高成爲int類型,而後再計算。 4. boolean類型不能發生數據類型轉換 */ public class Demo02DataType { public static void main(String[] args) { // 左邊是int類型,右邊是long類型,不同 // long --> int,不是從小到大 // 不能發生自動類型轉換! // 格式:範圍小的類型 範圍小的變量名 = (範圍小的類型) 本來範圍大的數據; int num = (int) 100L; System.out.println(num); // long強制轉換成爲int類型 int num2 = (int) 6000000000L; System.out.println(num2); // 1705032704(此時發生了數據溢出) // double --> int,強制類型轉換 int num3 = (int) 3.99; System.out.println(num3); // 3,這並非四捨五入,全部的小數位都會被捨棄掉 char zifu1 = 'A'; // 這是一個字符型變量,裏面是大寫字母A System.out.println(zifu1 + 1); // 66,也就是大寫字母A被當作65進行處理 // 計算機的底層會用一個數字(二進制)來表明字符A,就是65 // 一旦char類型進行了數學運算,那麼字符就會按照必定的規則翻譯成爲一個數字 byte num4 = 40; // 注意!右側的數值大小不能超過左側的類型範圍 byte num5 = 50; // byte + byte --> int + int --> int int result1 = num4 + num5; System.out.println(result1); // 90 short num6 = 60; // byte + short --> int + int --> int // int強制轉換爲short:注意必須保證邏輯上真實大小原本就沒有超過short範圍,不然會發生數據 溢出 short result2 = (short) (num4 + num6); System.out.println(result2); // 100 } }
三、數據溢出:性能
四、ASCII編碼表:
48 --> 0
65 --> A
97 --> a
代碼庫:Demo03DataTypeChar.java編碼
/* 數字和字符的對照關係表(編碼表): ASCII碼錶:American Standard Code for Information Interchange,美國信息交換標準代碼。 Unicode碼錶:萬國碼。也是數字和符號的對照關係,開頭0-127部分和ASCII徹底同樣,可是從128開始包含有更 多字符。 48 - '0' 65 - 'A' 97 - 'a' */ public class Demo03DataTypeChar { public static void main(String[] args) { char zifu1 = '1'; System.out.println(zifu1 + 0); // 49 char zifu2 = 'A'; // 其實底層保存的是65數字 char zifu3 = 'c'; // 左側是int類型,右邊是char類型, // char --> int,確實是從小到大 // 發生了自動類型轉換 int num = zifu3; System.out.println(num); // 99 char zifu4 = '中'; // 正確寫法 System.out.println(zifu4 + 0); // 20013 } }
2、運算符:
一、運算符:翻譯
算數運算符包括: | |
---|---|
+ | 加法運算,字符串鏈接運算 |
- | 減法運算 |
* | 乘法運算 |
/ | 除法運算 |
% | 取模運算,兩個數字相除取餘數 |
++、-- | 自增自減運算 |
代碼庫:Demo04Operator.javacode
/* 運算符:進行特定操做的符號。例如:+ 表達式:用運算符連起來的十字叫作表達式。例如: 20 + 5 、 又例如:a + b 四則運算: 加: + 減: - 乘: * 除: / 取模(取餘數):% 首先計算獲得表達式的結果,而後在打印輸出這個結果。 複習一下小學一年級的除法公式。 被除數 / 除數 = 商 ... 餘數 對於一個整數的表達式來講,除法用的是整除;整數除以整數。結果仍然是整數;只看商。不看餘數; 只有對於整數的除法來講,取模運算符纔有餘數的意義。 注意事項: 一、一旦運算當中有不一樣類型的數據,那麼結果將會是數據類型範圍大的那種。 */ public class Demo04perator( public static void main(Stringp[] args){ // 兩個常量之間能夠進行數學運算 System.out.println(20 + 30); // 兩個變量之間也能夠進行數學運算 int a = 20; int b = 30; System.out.println( a - b ); // -10 // 變量和常量之間能夠混合使用 System.out.println(a * 10); // -200 int x = 10; int y = 3; int resultl = x / y; System.out.println(resultl); // 3 int result2 = 2 % y ; System.out.println(result2); // 餘數、摸,1 // int + double --> double + double --> double double result3 = x + 2.5; System.out.println(result3); // 12.5 } }
二、算數運算符_加號的多種用法
代碼庫:Demo05Plus.javaorm
/* 四則運算當中的加號「+」有常見的三種用法: 1. 對於數值來講,那就是加法。 2. 對於字符char類型來講,在計算以前,char會被提高成爲int,而後再計算。 char類型字符,和int類型數字,之間的對照關係表:ASCII、Unicode 3. 對於字符串String(首字母大寫,並非關鍵字)來講,加號表明字符串鏈接操做。 任何數據類型和字符串進行鏈接的時候,結果都會變成字符串 */ public class Demo05Plus { public static void main(String[] args) { // 字符串類型的變量基本使用 // 數據類型 變量名稱 = 數據值; String str1 = "Hello"; System.out.println(str1); // Hello System.out.println("Hello" + "World"); // HelloWorld String str2 = "Java"; // String + int --> String System.out.println(str2 + 20); // Java20 // 優先級問題 // String + int + int // String + int // String System.out.println(str2 + 20 + 30); // Java2030 System.out.println(str2 + (20 + 30)); // Java50 } }
三、算數運算符_自增自減運算符:Demo06Operator.javablog
/* 自增運算符:++ 自減運算符:-- 基本含義:讓一個變量漲一個數字1,或者讓一個變量降一個數字1 使用格式:寫在變量名稱以前,或者寫在變量名稱以後。例如:++num,也能夠num++ 使用方式: 1. 單獨使用:不和其餘任何操做混合,本身獨立成爲一個步驟。 2. 混合使用:和其餘操做混合,例如與賦值混合,或者與打印操做混合,等。 使用區別: 1. 在單獨使用的時候,前++和後++沒有任何區別。也就是:++num;和num++;是徹底同樣的。 2. 在混合的時候,有【重大區別】 A. 若是是【前++】,那麼變量【馬上立刻+1】,而後拿着結果進行使用。 【先加後用】 B. 若是是【後++】,那麼首先使用變量原本的數值,【而後再讓變量+1】。 【先用後加】 注意事項: 只有變量才能使用自增、自減運算符。常量不可發生改變,因此不能用。 */ public class Demo06Operator { public static void main(String[] args) { int num1 = 10; System.out.println(num1); // 10 ++num1; // 單獨使用,前++ System.out.println(num1); // 11 num1++; // 單獨使用,後++ System.out.println(num1); // 12 System.out.println("================="); // 與打印操做混合的時候 int num2 = 20; // 混合使用,先++,變量馬上立刻變成21,而後打印結果21 System.out.println(++num2); // 21 System.out.println(num2); // 21 System.out.println("================="); int num3 = 30; // 混合使用,後++,首先使用變量原本的30,而後再讓變量+1獲得31 System.out.println(num3++); // 30 System.out.println(num3); // 31 System.out.println("================="); int num4 = 40; // 和賦值操做混合 int result1 = --num4; // 混合使用,前--,變量馬上立刻-1變成39,而後將結果39交給result1 變量 System.out.println(result1); // 39 System.out.println(num4); // 39 System.out.println("================="); int num5 = 50; // 混合使用,後--,首先把原本的數字50交給result2,而後我本身再-1變成49 int result2 = num5--; System.out.println(result2); // 50 System.out.println(num5); // 49 System.out.println("================="); int x = 10; int y = 20; // 11 + 20 = 31 int result3 = ++x + y--; System.out.println(result3); // 31 System.out.println(x); // 11 System.out.println(y); // 19 // 30++; // 錯誤寫法!常量不可使用++或者-- } }
四、賦值運算符:Demo07Operator.java圖片
/* 賦值運算符分爲: 基本賦值運算符:就是一個等號「=」,表明將右側的數據交給左側的變量。 int a = 30; 複合賦值運算符: += a += 3 至關於 a = a + 3 -= b -= 4 至關於 b = b - 4 *= c *= 5 至關於 c = c * 5 /= d /= 6 至關於 d = d / 6 %= e %= 7 至關於 e = e % 7 注意事項: 1. 只有變量才能使用賦值運算符,常量不能進行賦值。 2. 複合賦值運算符其中隱含了一個強制類型轉換。 */ public class Demo07Operator { public static void main(String[] args) { int a = 10; // 按照公式進行翻譯:a = a + 5 // a = 10 + 5; // a = 15; // a原本是10,如今從新賦值獲得15 a += 5; System.out.println(a); // 15 int x = 10; // x = x % 3; // x = 10 % 3; // x = 1; // x原本是10,如今從新賦值獲得1 x %= 3; System.out.println(x); // 1 // 50 = 30; // 常量不能進行賦值,不能寫在賦值運算符的左邊。錯誤寫法! byte num = 30; // num = num + 5; // num = byte + int // num = int + int // num = int // num = (byte) int num += 5; System.out.println(num); // 35 } }
五、比較運算符: |
比較運算符包括 | |
---|---|---|
== | 比較運算符兩邊數據是否相等,相等結果是true | |
< | 比較符號左邊的數據是否小於右邊的數據,若是小於結果是true | |
> | 比較符號左邊的數據是否大於右邊的數據,若是大於結果是true。 | |
<= | 比較符號左邊的數據是否小於或等於右邊的數據,若是小於結果是ture | |
>= | 比較符號左邊的數據是否大於或等於右邊的數據,若是小於結果是true | |
!= | 不等於符號,若是符號兩邊的數據不相等,結果是true |
比較運算符,是兩個數據之間進行比較的運算,運算結果都是布爾值true或者false
代碼庫:Demo08Operator.java字符串
/* 比較運算符: 大於: > 小於: < 大於等於: >= 小於等於: <= 相等: == 【兩個等號連寫纔是相等,一個等號表明的是賦值】 不相等: != 注意事項: 1. 比較運算符的結果必定是一個boolean值,成立就是true,不成立就是false 2. 若是進行屢次判斷,不能連着寫。 數學當中的寫法,例如:1 < x < 3 程序當中【不容許】這種寫法。 */ public class Demo08Operator { public static void main(String[] args) { System.out.println(10 > 5); // true int num1 = 10; int num2 = 12; System.out.println(num1 < num2); // true System.out.println(num2 >= 100); // false System.out.println(num2 <= 100); // true System.out.println(num2 <= 12); // true System.out.println("==============="); System.out.println(10 == 10); // true System.out.println(20 != 25); // true System.out.println(20 != 20); // false int x = 2; // System.out.println(1 < x < 3); // 錯誤寫法!編譯報錯!不能連着寫。 } }
六、邏輯運算符: |
邏輯運算符包括: | |
---|---|---|
&&短路與 | 一、兩邊都是true,結果是true 二、一遍是false,結果是false短路特色:符號左邊是false,右邊不在運算 | |
雙豎線+短路或 | 一、兩邊都是false,結果是false二、一邊是true,結果是true,短路特色:符號左邊是true,右邊再也不運算 | |
單豎線+! | 取反 一、!true結果是false 二、!false結果是true |
邏輯運算符:是用來連接兩個布爾類型結果的運算符,運算符結果都是布爾值true或者false
代碼庫:Demo09Logic.java
/* 與(而且) && 所有是true,纔是true,負責不然就是false 或(或者) || 只要有至少一個是true,就是true。全都是false。纔是false 非(取反) ! 原本是true,變成false,原本是false,變成true 與 「&&」 或「||」 具備短路效果;若是根據左邊已經能夠判斷獲得最終結果,那麼右邊的代碼將不在執行,從而節 省必定的性能。 注意事項: 一、邏輯運算符,只能用於Boolean值。 二、與、或須要左右有一個Boolean值,可是取反只要有惟一的一個Boolean值便可 三、與、或兩種運算符,若是有多個條件,能夠連續寫。 兩個條件;條件A && 條件B 多個條件;條件A && 條件B && 條件C TIPS: 對於1 < x < 3的狀況,應該拆成兩個部分,而後使用與運算符連接起來; int x =2; 1 < x && x < 3 */ public class Demo09Logic{ public static vodi main(string[] args){ System.out.println(true && false); // false // true && true --> true System.out.println(3 < 4 && 10 > 5); // true System.out.println("================="); System.out.println(true || false); // true System.out.println(true || true); // true System.out.println(false || false); // false System.out.println("================="); System.out.println(true); // true System.out.println(!true); // false System.out.println("================="); int a = 10; System.out.println(3 > 4 && ++a < 100); // false System.out.println(a); // 10 System.out.println("================="); int b = 20 // true || ---- System.out.println(3 < 4 || ++b < 100); // true System.out.println(b); // 20 } }
七、三元運算符:
代碼庫:Demo10Operator.java
/* 一元運算符:只須要一個數據就能夠進行操做的運算符。例如:取反!、自增++、自減-- 二元運算符:須要兩個數據才能夠進行操做的運算符。例如:加法+、賦值= 三元運算符:須要三個數據才能夠進行操做的運算符。 格式: 數據類型 變量名稱 = 條件判斷 ? 表達式A : 表達式B; 流程: 首先判斷條件是否成立: 若是成立爲true,那麼將表達式A的值賦值給左側的變量; 若是不成立爲false,那麼將表達式B的值賦值給左側的變量; 兩者選其一。 注意事項: 1. 必須同時保證表達式A和表達式B都符合左側數據類型的要求。 2. 三元運算符的結果必須被使用。 */ public class Demo10Operator { public static void main(String[] args) { int a = 10; int b = 20; // 數據類型 變量名稱 = 條件判斷 ? 表達式A : 表達式B; // 判斷a > b是否成立,若是成立將a的值賦值給max;若是不成立將b的值賦值給max。兩者選其一 int max = a > b ? a : b; // 最大值的變量 System.out.println("最大值:" + max); // 20 // int result = 3 > 4 ? 2.5 : 10; // 錯誤寫法! System.out.println(a > b ? a : b); // 正確寫法! // a > b ? a : b; // 錯誤寫法! } }