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