顺序结构就是我们最常见的按照顺序从上到下依次执行
package com.struct; public class ShunXu_Struct { public static void main(String[] args) { //struct 结构:学习第一个顺序结构 System.out.println("顺序结构1"); System.out.println("顺序结构2"); System.out.println("顺序结构3"); System.out.println("顺序结构4"); } }
格式:if(条件){业务逻辑}
package com.struct; import java.util.Scanner; public class ifDemo03 { public static void main(String[] args) { // if多选择结构 Scanner scan = new Scanner(System.in); System.out.println("请输入你的分数:"); int score = scan.nextInt(); if (score==100){ System.out.println("恭喜满分"); }else if (score<100 && score>=90){ System.out.println("优秀"); }else if (score<90 && score>=80){ System.out.println("良好"); }else if (score<80 && score>=70){ System.out.println("中等"); }else if (score<70 && score>=60){ System.out.println("及格"); }else if (score<60 ){ System.out.println("不及格"); }else { System.out.println("成绩不合法"); } scan.close(); } }
可以通过反编译的信息去查看字节码文件,可以发现Case那个地方是一串式子因为字符的本子就是数字,每个Case后面都要加上break表示当条件满足遍跳出循环,否则会出现case穿透现象。
格式:switch(条件){case1: case2}不同条件的不同结果
package com.struct; public class switchCase_2 { public static void main(String[] args) { //Jdk7以上支持字符串 //字符的本质还是数字 //反编译 java---class(字节码文件) ---反编译(idea) String name = "大哥"; switch (name){ case "大哥": System.out.println("我是你大哥"); break;//可选 case "二弟": System.out.println("我是你二弟"); break; case "三弟": System.out.println("我是你三弟"); break; default://可写可不写 System.out.println("你这是哪国语言???"); } } }
package com.struct; public class do_WhileDemo01 { public static void main(String[] args) { /** * while(布尔表达式) {循环内容} 先判断在执行如果条件不满足就不会执行 * while是最基本的循环,只要布尔表达式为true,循环就会一直执行下去 * 大多数情况我们是会让循环停止下来的,这就需要一个让表达式失效的方式结束循环 * 少部分情况需要循环体一直执行,比如服务器的请求响应监听 * 循环条件如果一直为ture就会造成死循环,在正常的业务编程中会影响性能或者程序卡死 * * 思考如何实现 计算1+2+3+4+5+.....+100=? */ int i = 0; int sum =0; while (i<=100){ sum = sum + i; i++; } System.out.println(sum); } }
package com.struct; public class do_WhileDemo02 { public static void main(String[] args) { /** * 首先要明白 While 和 do While的区别 * While循环是先判断再执行也就是说如果条件不满足他压根就不会执行 * 但是有时候我们需要即使不满足条件也要执行一次程序 * 最大的区别就是 do While 至少会执行一次 */ int i = 0; int sum =0; do { sum = sum + i; i++; }while (i<=100); System.out.println(sum); } }
package com.struct; public class dowhile_And_while { public static void main(String[] args) { /** * 测试一下 While 和 do while的不同 * 可以看出来do{}while(条件)至少执行了一次程序 */ int a = 0; // 测试While while (a<0) { System.out.println("a");//这一段没有执行 } System.out.println("================"); do { a++; System.out.println(a); //结果 1 可以看出来就算条件不满足也最少执行了一次 }while (a<0); } }
package com.struct; public class ForDemo01 { public static void main(String[] args) { int a = 1 ; //初始化条件 int sum = 0 ; while (a<=100){//条件判断 System.out.println(a);//循环体 a += 2 ;//迭代 } System.out.println("While循环结束"); // 初始化值 循环条件 迭代更新 for (int i = 1;i<=100;i++){//循环条件 System.out.println(i);//循环体 sum = sum + i; } System.out.println("for循环结束!sum的和为"+sum); //for 循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构 //快捷方式生成for循环100.for } }
package com.struct; public class ForDemo02 { public static void main(String[] args) { //练习1:计算0到100之间奇数和偶数的和 int oddSum = 0;//奇数的和 int evenSum = 0;//偶数的和 for (int i = 0; i <= 100; i++) { if (i%2!=0){//奇数 oddSum +=i; }else {//偶数 evenSum +=i; } } System.out.println("奇数的和是:"+oddSum+"\n"+"偶数的和是:"+evenSum); } }
package com.struct; public class ForDemo03 { public static void main(String[] args) { //练习2:使用while或for 循环输出1-1000之间能被5整除的数,且每行输出3个 //第一种for循环的实现 for (int i = 0; i <= 1000; i++) { if (i%5==0){ //被5整除的数 System.out.print(i+"\t"); } if (i%(5*3)==0){//5、10、15 以15为整除来换行 //System.out.print("\n");//换行 System.out.println();//换行 //print()不换行 println()换行 } } System.out.println("for循环结束开始while循环练习....."); // 第二种While循环的方式实现 int a = 0; while (a<=1000){ a++; if (a%5==0){ System.out.print(a+"\t"); } if (a%(15)==0){ System.out.println(); } } System.out.println("while循环结束"); } }
package com.struct; public class ForDemo04 { public static void main(String[] args) { // 练习三 for循环实现 九九乘法表 嵌套for循环的使用 //1.首先输出一个定式子的1+"*"+i=(1*i) 能够得出一列 以1开头*到9的数值 ===>先写出内循环 //2.把九九乘法表看成1*1 开头的列 2*2开头的列 3*3开头的列 //3.去掉重复值 也可以理解为控制每一行的长度嘛 外循环执行一次内训都要重新执行一遍 所以当i<=j的时候就可以达到效果了 for (int j = 1; j < 10; j++) { System.out.println();//执行完一次就换行 for (int i = 1; i<=j; i++) { System.out.print(i+"*"+j+"="+(j*i)+"\t"); } } } }
要学会吧困难的问题简单化把他看成是多个三角形的拼接 分成三部分来实现
package com.struct; public class TestDemo { public static void main(String[] args) { // 小结练习 金字塔三角形打印 // 如果理解不了可以进行debug断点测试 for (int i = 1; i <= 5; i++) { for (int j = 5; j >=i; j--) {//左上角三角形 System.out.print(" "); } for (int j =1; j <=i; j++) {//左下角三角形 System.out.print("*"); } for (int j =1; j <i; j++) {//又下脚小三角形 System.out.print("*"); } System.out.println(); } } } 结果: * *** ***** ******* *********
增强for循环其实就是一种方便数组遍历数据的一个循环
package com.struct; public class ForDemo05_Add { public static void main(String[] args) { //增强for循环 int[] numbers = {10,20,30,40,50};//定义一个数组 for (int i =0;i<5;i++){ System.out.println(numbers[i]); } System.out.println("普通for循环演示结束开始增强for循环的演示....."); //增强for循环遍历数组元素 for (int x:numbers){ System.out.println(x); // numbers里面每一项的值赋值给了int x } /* 结果如下: 10 20 30 40 50 普通for循环演示结束开始增强for循环的演示..... 10 20 30 40 50 */ } }
首先要明白跳出循环的方式宏观来看有三种
package com.struct; public class BreakDemo { public static void main(String[] args) { // break用于强行退出循环,不执行循环中剩余的语句 int a = 0; int sum = 0; while (a<100){ a++; System.out.println(a); if (a==11){ System.out.println("a=11了兄弟循环要结束了喔!"); break; } } System.out.println("123456你看见我了那我结束循环了"); } }
package com.struct; public class ContinueDemo { public static void main(String[] args) { /* continue 语句用在循环语句体中,用于终止某次循环过程,也就是跳过循环体中没有执行的语句 */ int a =0; while (a<100){ a++; if (a%10==0){//可以看出每次满足a%10==0的时候就会跳出本次循环不输出相应结果 但他还是会继续回到While执行下一次的循环 System.out.println(); continue;//if条件满足直接跳回开头while执行下一个while循环条件的判断 } System.out.print(a+"\t"); /*结果 1 2 3 4 5 6 7 8 9 11 12 13 14 15 16 17 18 19 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 51 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 78 79 81 82 83 84 85 86 87 88 89 91 92 93 94 95 96 97 98 99 */ } } }