循环结构
while 循环
-
语法结构:
while (布尔表达式) { // 循环体(循环内容) }
-
while 循环是最基本的循环
-
布尔表达式为 true,循环就会一直执行
-
程序中大多数情况,是需要程序循环到满足条件,都会让程序停下来
-
极少数部分程序需要一直循环,循环条件一直为 true 会使程序无限循环(死循环),实际开发中,应避免程序陷入死循环,极大程度的会影响程序性能,甚至会造成程序卡死崩溃
-
程序案例:
public static void main(String[] args) { int i = 0; // 当 i 大于100时,结束循环 while(i <= 100){ System.out.println(i); // 输出1到100数值 i = i + 1; } }
do while 循环
-
语法结构:
do { // 循环体(循环内容) } while (布尔表达式);
-
do…while 循环与 while 区别:
- while 先判断后执行,do…while 是先执行后判断
- do…while 总是会保证循环体被至少执行一次
-
程序案例:
public static void main(String[] args) { int i = 0; // i 不小于等于-100,程序被执行一次 do { System.out.println(i); // 输出一次为0 i = i + 1; } while (i <= -100); System.out.println(i); // 输出值1 int j = 0; // 当 j 大于100时,结束循环 do { System.out.println(j); // 输出1到100数值 j = j + 1; } while (j <= 100); }
for 循环
-
语法结构:
for (初始化值; 布尔表达式; 更新值) { // 循环体(循环内容) }
-
Java 提供了循环结构更加简单的 for 循环
-
for 循环是支持迭代的一种通用结构,是最有效、最灵活的循环结构
-
for 循环的执行次数是在执行前就已经进行定义
-
程序案例:
public static void main(String[] args) { int a = 1; for (int i = 0; i <= 100; i++) { System.out.println(i); } // 计算0到100之间的奇数和偶数的和 int jSum = 0; int ouSum = 0; for (int i = 0; i <= 100; i++) { if(i % 2 != 0){ jSum = jSum + i; } else { ouSum = ouSum + i; } } System.out.println("奇数和:" + jSum); System.out.println("偶数和:" + ouSum); // 用 while 或 for 循环输出1-1000之间能被5整除的数,并且每行输出3个 // 第一种写法 int b = 0; for (int i = 0; i <= 1000; i++) { if(i % 5 == 0){ b = b + 1; if(b == 3){ // System.out.println(); 输出语句中有ln的代表换行 // System.out.print(); 不换行 // \n 也代表换行 // \t 代表tab键(制表符) System.out.print(i + "\t"); System.out.println(); b = 0; } else { System.out.print(i + "\t"); } } } // 第二种写法(推荐这种),学会用数学的思维方式去编程 for (int i = 0; i <= 1000; i++) { if (i % 5 == 0) { // System.out.println(); 输出语句中有ln的代表换行 // System.out.print(); 不换行 // \n 也代表换行 // \t 代表tab键(制表符) System.out.print(i + "\t"); // 0除外,每行第三个数总是能被15整除,实现每行输出3个数值 if (i % (5 * 3) == 0) { // System.out.println(""); System.out.print("\n"); } } } // 打印九九乘法表 // 根据九九乘法表规律,乘数代表的是第几行,且对应的就有多少列,由此可知第n行的时候就有第n列 for (int i = 1; i <= 9; i++) { // 行 for (int j = 1; j <= i; j++) { // 列 System.out.print(i + " × " + j + " = " + i * j + "\t"); } System.out.print("\n"); } // -------------------------------------- // 控制栏输出打印: /** 1 × 1 = 1 2 × 1 = 2 2 × 2 = 4 3 × 1 = 3 3 × 2 = 6 3 × 3 = 9 4 × 1 = 4 4 × 2 = 8 4 × 3 = 12 4 × 4 = 16 5 × 1 = 5 5 × 2 = 10 5 × 3 = 15 5 × 4 = 20 5 × 5 = 25 6 × 1 = 6 6 × 2 = 12 6 × 3 = 18 6 × 4 = 24 6 × 5 = 30 6 × 6 = 36 7 × 1 = 7 7 × 2 = 14 7 × 3 = 21 7 × 4 = 28 7 × 5 = 35 7 × 6 = 42 7 × 7 = 49 8 × 1 = 8 8 × 2 = 16 8 × 3 = 24 8 × 4 = 32 8 × 5 = 40 8 × 6 = 48 8 × 7 = 56 8 × 8 = 64 9 × 1 = 9 9 × 2 = 18 9 × 3 = 27 9 × 4 = 36 9 × 5 = 45 9 × 6 = 54 9 × 7 = 63 9 × 8 = 72 9 × 9 = 81 */ }
增强 for 循环
-
语法结构:
for (声明语句 : 表达式) { // 循环体 }
-
JDK5 引入主要用于数组或集合的增强型 for 循环
-
声明语句:声明新的局部变量,该变量类型必须和数组元素的类型相匹配,其作用域限定在循环体内,其值与次数数组元素值相等
-
表达式:表达式是要访问的数组名,或是返回值为数组的方法
-
程序案列:
public static void main(String[] args) { int [] numbers = {1, 2, 3, 4 ,5 ,6}; // 整型 numbers 数组的长度 int length = numbers.length; for (int i = 0; i < length; i++) { // 数组下标序号从0开始 // 数组取值 int number = numbers[i]; System.out.println(number); } System.out.println("---------------分割线--------------------"); for (int number : numbers) { System.out.println(number); } // -------------------------------------- // 控制栏输出打印: /** 1 2 3 4 5 6 ---------------分割线-------------------- 1 2 3 4 5 6 */ }