Java之冒號的用法


1. 三目運算符 “?:”

“式子A?式子B:式子C”:當A成立時,得到式子B的結果;當式子A不成立時,得到式子C的結果。

注:該運算符只適用於需要返回計算結果的場合。

2.switch-case的分支標記

		...... System.out.println("涼風有信,秋月無邊。打二字"); System.out.println("獲取“涼風有信”的謎底請按1,獲取“秋月無邊”的謎底請按2"); Scanner scan = new Scanner(System.in); // 從控制台接收輸入文本 int seq = scan.nextInt(); // nextInt方法表示接收一個整數,以回車鍵結尾 // switch允許判斷某個變量的多個取值,並分別進行單獨處理 switch (seq) { case 1: // seq值為1時進入該分支 System.out.println("涼風有信的謎底是“諷”"); break; // 跳出多路分支。即跳到switch分支的右花括號之后 case 2: // seq值為2時進入該分支 System.out.println("秋月無邊的謎底是“二”"); break; // 跳出多路分支。即跳到switch分支的右花括號之后 default: // seq值為其它時進入該分支 System.out.println("您的按鍵有誤"); break; // 跳出多路分支。即跳到switch分支的右花括號之后 } System.out.println("猜謎結束"); 

 

 

多路分支固然好用,但要特別注意以下幾點:
(1)多路分支只能判斷整型(含byte、short、int)、字符型、枚舉型3種類型的變量,無法判斷布爾、浮點、雙精度等其他類型的變量。

(2)case語句后面的數值只能做相等判斷,不能開展大於、小於等其他關系運算。

3.for循環的數組元素遍歷

若不修改元素的數值,則可以運用冒號對數組進行遍歷,故利用“變量類型 變量名稱 : 數組名稱”的形式,直接把數組元素賦值給該變量。

		一維數組冒號遍歷
		...... int[] numbers = { 2, 3, 5, 7 }; //for (int i = 0; i < numbers.length; i++) { //int number = numbers[i]; // 獲取下標為i的元素,並賦值給名為number的變量 //System.out.println("number = " + number); //} // 在for循環中,可以利用“變量類型 變量名稱 : 數組名稱”的形式,直接把數組元素賦值給該變量 for (int number : numbers) { System.out.println("number = " + number); } 

 

 

		二維數組冒號遍歷
		...... int[][] numbers = {{1,3,5} , {2,4,6}}; /*for(int i = 0; i < numbers.length; i++){ * for(int j = 0; j < numbers[].length; j++){ * System.out.println("value =" + numbers[i][j]); */ for(int[] number_1 : numbers) { for(int number_2 : number_1) { System.out.println("number_2 =" + number_2); } } 

 

 

4.多層循環的跳轉標記

此處的冒號也與循環語句有關,但不限於for循環,而是與for 和 while 都有關聯。然而在實際開發中常常會遇到多層循環,為了更好的達到開發目的,便利用“ 標記名稱 :for / while ” 的表達式,即可給定循環起一個外號,於是語句“break 標記名稱 ”便實現跳出指定循環的需求。

		...... double[][] triangle = { { -2.0, 0.0 }, { 0.0, -1.0 }, { 2.0, 1.0 } }; // 下面通過多重循環依次打印二維數組里面的所有元素 for (int i = 0; i < triangle.length; i++) { for (int j = 0; j < triangle[i].length; j++) { System.out.println("value = " + triangle[i][j]); } } // 初始:處理要求:一旦發現數組元素等於0.0,就立即從第二層循環跳出第一層循環(跳出兩層循環) for (int i = 0; i < triangle.length; i++) { boolean isFound = false; // 該布爾變量用來標記是否找到0.0 for (int j = 0; j < triangle[i].length; j++) { if (triangle[i][j] == 0.0) { isFound = true; // 找到了0.0 System.out.println("simple found 0.0"); break; // 跳出第二層循環 } } if (isFound) { // 根據布爾變量判斷是否找到了0.0 break; // 跳出第一層循環 } } 

 

 

// 優化:下面的loop1是一個記號,連同后面的冒號加在for前面,表示它指代這個for循環 loop1: for (int i = 0; i < triangle.length; i++) { for (int j = 0; j < triangle[i].length; j++) { if (triangle[i][j] == 0.0) { // 找到了0.0,准備跳出外層循環 System.out.println("loop1 found 0.0"); break loop1; // 跳出loop1代表的循環,也就是跳出第一層循環 } } } 

 

// 最終優化:下面用到了兩種冒號,一種用來標記循環,另一種用來簡化數組遍歷 loop2: for (double[] dot : triangle) { // dot等價於前面的triangle[i] for (double coordinate : dot) { // coordinate等價於前面的triangle[i][j] if (coordinate == 0.0) { // 找到了0.0,准備跳出外層循環 System.out.println("loop2 found 0.0"); break loop2; // 跳出loop2代表的循環 } } } 

 

 

誤解 :break 與 continue 區別:
a. break:跳出本次循環的循環塊或者程序塊;

b. continue:強迫程序跳到本次循環的起始處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM