选择结构
if语句:
- 当条件表达式为
true
时,就是会执行{}
代码,如果为false,就不会执行语法
if (表达式) {
如果表达式为 true 时执行的代码
}
实例
int a=0;
if (a==1){
System.out.println(a);
if else语句:
if else语句: 当
条件表达式
为true
时,执行代码1
,如果为false,执行代码2语法
if (条件) {
条件为 true 时执行的代码块(执行代码1)
} else {
条件为 false 时执行的代码块(执行代码2)
}
实例
if(a==0){
System.out.println(1);
}else {
System.out.println(3);
}
if-else-if语句
if 语句至多有
1 个 else 语句
,else 语句在所有的 else if 语句之后。- if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
- 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行
语法
if (条件 1) {
条件 1 为 true 时执行的代码块
} else if (条件 2) {
条件 1 为 false 而条件 2 为 true 时执行的代码块
} else {
条件 1 和条件 2 同时为 false 时执行的代码块
}
实例
```java if (time < 10) { greeting = “Good morning”; } else if (time < 18) { greeting = “Good day”; } else { greeting = “Good evening”; }
//90-100 优秀 80-89 好 70-79 良 60-69 及格 60以下 不及格 public static void main(String[] args) { int score = 100; if(score<0 || score>100){ System.out.println(“你的成绩是错误的”); }else if(score>=90 && score<=100){ System.out.println(“你的成绩属于优秀”); }else if(score>=80 && score<90){ System.out.println("你的成绩属于好"); }else if(score>=70 && score<80){ System.out.println("你的成绩属于良"); }else if(score>=60 && score<70){ System.out.println(“你的成绩属于及格”); }else { System.out.println(“你的成绩属于不及格”); } }}
<a name="fVnyF"></a>
###
<a name="kH7Kg"></a>
## 嵌套的 if…else 语句
- 使用嵌套的 if…else 语句是合法的。也就是说你可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句
<a name="Nl2jU"></a>
#### 语法
```java
if(布尔表达式 1){
////如果布尔表达式 1的值为true执行代码
if(布尔表达式 2){
////如果布尔表达式 2的值为true执行代码
}
}
实例
public class Test {
public static void main(String args[]){
int x = 30;
int y = 10;
if( x == 30 ){
if( y == 10 ){
System.out.print("X = 30 and Y = 10");
}
}
}
}
switch语句:
switch:条件成立执行分支,条件不成立继续向下判断分支,如果分支都不满足,则执行default语句块
支持类型:int
、byte
、short
、String字符串
、枚举类型
。
注意点:
- 每个语句后面必须加break,
防止case穿透
- default语句必须放到最后
语法
switch (表达式) {
case 常量表达式或枚举常量:
语句;
break;
case 常量表达式或枚举常量:
语句;
break;
......
default: 语句;
break;
}
实例
switch (a){
case 1 :
System.out.println("第一名");
break;
case 2:
System.out.println("第二名");
break;
case 3:
System.out.println("第三名");
break;
default:
System.out.println("没有名次");
}
总结:
- if -else: 二选一
- if-else-if:范围多选一
-
循环语句:
while语句:
先判断
条件表达式是否成立
,再执行语句块
,如果不成立则跳过语句块,执行后面的语句语法
初始化值
while (表达式){
语句块
变量自增(自减);
}
实例
public class TestWhile{
public static void main(String[] args){
//功能:1+2+3+4+5
//1.定义变量:
int num = 1;//条件初始化
//2.定义一个求和变量,用来接收和:
int sum = 0;
while(num<=5){//条件判断
sum += num;//循环体
num++;//迭代
}
//3.输出和
System.out.println(sum);
}
}
- 将部分代码重复执行
- 循环四要素:条件初始化、条件判断、循环体、迭代(初始化谁就判断谁,判断谁就迭代谁)
do while语句:
先执行循环中的语句块,然后在判断while中的表达式
,如果成立再次执行,如果不成立跳出循环,执行后面的语句,do-while循环的循环体至少执行一次
语法
初始化值
do {
语句块
变量自增(自减);
}while (表达式);
实例
public class Test {
public static void main(String[] args) {
//while循环:先判断再执行
int a = 0;
while (a < 0) {
System.out.println(a);
a++;
}
System.out.println("-----");
//do-while循环:先执行再判断
a = 0;
do {
System.out.println(a);
a++;
} while (a < 0);
}
}
while和do-while的区别:
- while: 先判断,再执行
- do-while: 先执行,再判断—-》至少被执行一次,从第二次开始才进行判断
for语句:
先判断初始化值``(循环变量)
,第二步判断循环条件会否成立
,第三步执行语句块
,第四部循环变量自增
,如果判断循环条件不成立,则直接跳出循环
语法
for (初始化值;循环条件;变量自增(自减);){
语句块;
}
实例
public class ForDemo01 {
public static void main(String[] args) {
//初始化 条件判断 迭代
for (int i = 0; i < 100; i++) {
System.out.println(i);
}
System.out.println("for循环结果");
}
}
习题题💋
public class ForDemo02 {
public static void main(String[] args) {
//计算0到100直接的奇数和,偶数和
int oddSum = 0;
int evenSum = 0;
for (int i = 0; i <=100; i++) {
if (i%2!=0){//基数
oddSum =oddSum +i;
}else {
evenSum = evenSum +i;
}
}
System.out.println("基数和"+oddSum);
System.out.println("偶数和"+evenSum);
}
}
for语句增强版:
常用于数组遍历打印
int stu[]={1,2,4,87,7,6,6,21,2,7,7,445,8,8};
for (int i : stu) {
System.out.print(i+" ");
}
- 优点:代码少
- 缺点:不能直接获取索引
循环嵌套:
所有循环体中可以嵌套另外任意一个其他循环体,外层循环执行一遍,内层循环执行一个完整循环。
99乘法表打印:
for (int i=1;i<=9;i++){
for (int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+i*j+"\t");
}
System.out.println();
}
public class Demo17LoopHourAndMinute {
public static void main(String[] args) {
for (int hour = 0; hour < 24; hour++) { // 外层控制小时
for (int minute = 0; minute < 60; minute++) { // 内层控制小时之内的分钟
System.out.println(hour + "点" + minute + "分");
}
}
}
}
死循环
永远停不下来的循环,叫做死循环
死循环的标准格式:
while (true) {
循环体
}
public class Demo16DeadLoop {
public static void main(String[] args) {
while (true) {
System.out.println("I Love Java!");
}
// System.out.println("Hello");
}
}
三种循环的区别
如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,但是do-while循环会执行至少一次。
2.for
循环的变量在小括号
当中定义,只有循环内部才可以使用。while
循环和do-while
循环初始化语句本来就在外面,所以出来循环之后还可以继续使用。public class Demo13LoopDifference {
public static void main(String[] args) {
for (int i = 1; i < 0; i++) {
System.out.println("Hello");
}
// System.out.println(i); // 这一行是错误写法!因为变量i定义在for循环小括号内,只有for循环自己才能用。
System.out.println("================");
int i = 1;
do {
System.out.println("World");
i++;
} while (i < 0);
// 现在已经超出了do-while循环的范围,我们仍然可以使用变量i
System.out.println(i); // 2
}
}
跳出语句:
break语句:
如果在循环体中加入break语句则结束本次循环
break关键字的用法有常见的两种:
- 可以用在switch语句当中,一旦执行,整个switch语句立刻结束。
- 还可以用在循环语句当中,一旦执行,整个循环语句立刻结束。打断循环。
关于循环的选择,有一个小建议:凡是次数确定的场景多用for循环;否则多用while循环
public class Demo14Break {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
// 如果希望从第4次开始,后续全都不要了,就要打断循环
if (i == 4) { // 如果当前是第4次
break; // 那么就打断整个循环
}
System.out.println("Hello" + i);
}
}
}
如果循环嵌套中需要让内层循环中的break控制到外层循环,可以给循环加一个标识符
,从而达到控制外层循环的效果。
outer: for(int i=0;i<10;i++){
inner: for(int j=1;j<=10;j++){
if(j>=5){
break outer;
}
}
}
continue语句:
一旦执行,立刻跳过当前次循环剩余内容,马上开始下一次循环
如果在for循环体中用continue语句结束本次循环,需要把循环控制条件自减一位。
for (int i = 1; i <= 5; i++) {
System.out.print("请输入第" + i + "个学生的成绩:");
double x = input.nextDouble();
if (x < 0 || x > 100) {
System.out.println("成绩不合法,请重新输入");
i--;
continue;
}
sum = sum + x;
}
return语句:
结束当前方法,如果是调用,则返回调用该方法的语句处