1. 顺序结构:从上往下,依次执行
2. 选择结构:按照不同的选择,执行不同的代码
a) if语句
i. 格式(三种)
if(布尔表达式){ 代码; } if(条件){ 代码; }else{ 代码; } if(条件){ 代码; }else if(条件){ 代码; } else if(条件){ 代码; } …… else{ 代码; }
ii. 注意事项
1) if语句中条件的结果必须为boolean类型。
2) 一个if语句中可以有0个或1个else语句。
3) else语句必须出现在if语句的最后。
4) 一个if语句中可以有0个或多个else if语句。
5) 当匹配到一个分支后,不再匹配其它的分支。
6) if的大括号可以省略,如果省略if的作用范围只有一行JAVA代码。
iii. 三元运算符和if语句第二种格式的关系
所有的三元运算符能够实现的,if语句的第二种格式都能实现。反之不成立,如果if语句第二种格式控制的语句体是输出语句,就不可以。因为三元运算符是一个运算符,必须要有一个结果返回,不能是一个输出语句。
b) switch语句
i. 格式:
switch(switch表达式){ case 值1: 语句(组)1; break; case 值2: //case:后面的值就是要和表达式进行比较的值 语句(组)2; break; …… default: //如果所有的情况都不匹配,就执行这里,相当于if语句中的else 语句(组)n+1; break; //表示程序到这里中断,跳出switch语句 }
ii. 注意事项
1) switch语句中的表达式只能为byte,short,int,char。从JDK1.5开始可以使用枚举类型。从JDK1.7开始可以使用String。
2) case后面的值不能重复。
3) case后面只能为常量或字面值。
4) case后面可以为算术表达式。
5) 当匹配到一个分支后,switch会从此分支开始自顶向下执行所有的分支,直到switch的结束或遇到第一个break为止。
6) default可以出现在switch语句中的任意位置。
7) 无论default出现在哪,switch都会先匹配所有的case分支。如果没有匹配到任何case分支后,再执行default分支。
8) break可以省略,但是结果可能不是我们想要的。会出现一个现象:case穿透(如下示例)。建议不要省略
switch (month) { case 1: case 2: case 12: System.out.println("冬季"); break; case 3: case 4: case 5: System.out.println("春季"); break; case 6: case 7: case 8: System.out.println("夏季"); break; case 9: case 10: case 11: System.out.println("秋季"); break; default: System.out.println("你输入的月份有误"); }
9) default可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
c) if语句和switch语句的区别?
if语句:
A:针对结果是boolean类型的判断
B:针对一个范围的判断
C:针对几个常量值的判断
switch语句:
针对几个常量值的判断
3. 循环结构:做一些重复的代码。while循环,do..while循环,for循环
a) while循环:当不确定循环次数时,建议使用while循环。
i. 格式:
while(循环条件){ //循环体 语句(组); }
ii. 注意事项
1) 当循环条件返回true,执行循环。当循环条件返回false,结束循环。
2) 循环条件的结果必须为boolean类型。
3) while:先判断,再循环。
b) do..while循环:
i. 格式:
do { //循环体 语句(组); } while (循环条件);
ii. 注意事项
1) 大括号不能省略。
2) do..while:先循环,再判断。至少会循环一次。
c) for循环:当确定循环次数时,建议使用for循环。
i. 格式:
for(初始操作;循环条件;每次迭代后的操作){ //循环体 语句(组); } for ( int i = 1 ; i < 100 ; System.out.println(i), i++); //该语句正确
ii. 注意事项
1) for循环的三部分都可以省略。
2) Math.random():返回大于等于0.0,小于1.0的double类型的随机数。0.0---0.99999999999999999
3) for循环第一部分声明变量只能在for循环内使用。
4) for循环的第一部分可以同时声明多个类型相同的变量。
iii. 求出1-100之间偶数和
// 方式1 int sum2 = 0; for (int x = 1; x <= 100; x++) { if (x % 2 == 0) { sum2 += x; } } System.out.println(sum2); // 2550 // 方式2 int sum3 = 0; for (int x = 0; x <= 100; x += 2) { sum3 += x; } System.out.println(sum3); // 2550
iv. 在控制台输出所有的"水仙花数";
水仙花数是指一个 n 位正整数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)
这里以三位正整数为例:
for (int x = 100; x < 1000; x++) { int ge = x % 10; int shi = x / 10 % 10; int bai = x / 10 / 10 % 10; // 让ge*ge*ge+shi*shi*shi+bai*bai*bai和该数据比较 if (x == (ge * ge * ge + shi * shi * shi + bai * bai * bai)) { // 如果相同,就把该数据在控制台输出。 System.out.println(x); } }
d) 中断循环:
i. break(中断):只能出现在switch语句与循环语句中。出现在循环语句中的作用:立即结束所在循环。
ii. continue(继续):只能出现在循环语句。作用:立即结束本次循环,使所在循环直接进入下一次循环。
iii. return(返回):用于结束方法的(作用不是结束循环),一旦遇到return,程序就不会在继续往后执行。
e) for和while的区别
i. 使用上的区别
for语句的那个控制条件变量,在循环结束后不能在使用了。而while的可以继续使用。
ii. 理解上的区别
for适合于一个范围的判断,while适合次数不明确的。
f) 嵌套循环
i. 请输出一个4行5列的星星(*)图案
// ***** // ***** // ***** // ***** for (int y = 0; y < 4; y++) { for (int x = 0; x < 5; x++) { System.out.print("*"); } System.out.println(); }
ii. 请输出下列的形状
// * // ** // *** // **** // ***** for (int x = 0; x < 5; x++) { for (int y = 0; y <= x; y++) { System.out.print("*"); } System.out.println(); }
iii. 在控制台输出九九乘法表
// 1*1=1 // 1*2=2 2*2=4 // 1*3=3 2*3=6 3*3=9 // 1*4=4 2*4=8 3*4=12 4*4=16 // ... // 1*9=9 2*9=18 3*9=27 ... for (int x = 1; x <= 9; x++) { for (int y = 1; y <= x; y++) { System.out.print(y + "*" + x + "=" + y * x + "\t"); } System.out.println(); } // '\x' x表示任意,这种做法叫转移字符。 // // '\t' tab键的位置 // // '\r' 回车 // // '\n' 换行