• 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:强迫程序跳到本次循环的起始处。

  • 相关阅读:
    CppUnit使用指南
    详细分析内存泄露检测
    设计模式之我的理解创建型模式:工厂方法
    MSXML2使用笔记
    【C++】函数指针
    设计模式之我的理解桥模式
    python 使用pyinstaller,pywin32打包.py成.exe应用程序
    python 获取当前时间的用法
    python 使用urllib.urlopen超时问题的解决方法
    python pip的安装流程,以及使用pip更新,卸载第三方模块
  • 原文地址:https://www.cnblogs.com/coder-ahao/p/14225226.html
Copyright © 2020-2023  润新知