Java基础下
选择语句
1.if语句
if语句格式1:
if(关系表达式) {
语句体;
}
执行流程:
A:计算关系表达式,看其结果
B:如果是true,就执行语句体
如果是false,就不执行语句体
C:继续向下执行
class IfDemo { public static void main(String[] args) { int x = 3; if(x == 3) { System.out.println("x等于3"); //x = 10; } if(x > 5) { System.out.println("x大于5"); } System.out.println("over"); } }
if语句格式2:
if(关系表达式) {
语句体1;
}else {
语句体2;
}
执行流程:
A:计算关系表达式的值。
B:如果是true,就执行语句体1
如果是false,就执行语句体2
C:继续向下执行
class IfDemo3 { public static void main(String[] args) { int x = 3; if(x == 3) { System.out.println("x等于3"); }else { System.out.println("x不等于3"); } if(x > 5) { System.out.println("x大于3"); }else { System.out.println("x不大于5"); } } }
if语句格式3:
if(关系表达式1) {
语句体1;
}else if (关系表达式2) {
语句体2;
}
…
else {
语句体n+1;
}
执行流程:
首先判断关系表达式1看其结果是true还是false
如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断关系表达式…看其结果是true还是false
…
如果没有任何关系表达式为true,就执行语句体n+1。
import java.util.Scanner; class IfDemo5 { public static void main(String[] args) { //创建键盘录入对象 Scanner sc = new Scanner(System.in); //键盘录入学生成绩 System.out.println("请输入成绩:"); int score = sc.nextInt(); //校验数据的时候,一定要注意: //正确数据 //错误数据 //边界数据 /* 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("不及格"); } */ //这个时候,虽然可以满足要求了。但是没有考虑到错误数据的情况。 //所以,我们需要加一个判断 /* 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 if(score>=0 && score<60) { System.out.println("不及格"); }else { System.out.println("输入的成绩有误"); } */ //我们也可以先判断成绩是否有误 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("不及格"); } } }
2.switch语句
switch语句格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n+1;
break;
}
格式解释:
A:switch表示这是switch语句
B:表达式的取值
byte,short,int,char
JDK5以后可以是枚举类型。(enum)
JDK7以后可以是字符串。(String)
C:case后面跟的是要和表达式进行比较的值
D:语句体可以是多条语句
E:break表示中断,结束的意思,可以结束switch语句
F:default语句表示所有情况都不匹配的时候,就执行该处的内容
import java.util.Scanner; class SwitchDemo { public static void main(String[] args) { //创建键盘录入对象 Scanner sc = new Scanner(System.in); //键盘录入数据 System.out.println("请输入一个数据(1-7):"); int week = sc.nextInt(); //用switch语句实现 switch(week) { case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; case 3: System.out.println("星期三"); break; case 4: System.out.println("星期四"); break; case 5: System.out.println("星期五"); break; case 6: System.out.println("星期六"); break; case 7: System.out.println("星期日"); break; default: System.out.println("你输入的数据有误"); break; } } }
注意事项
A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
B:default可以省略吗
可以省略。一般不建议。除非判断的值是固定的。
C:break可以省略吗
可以。最后一个肯定是没有任何问题的。
中间的省略也是可以的,但是不建议,因为可能对我们想要的结果产生影响。
D:default的位置一定要在最后吗
不一定,可以在任何和case相对应的位置。
但是,这个时候,最好加上break。
E:switch语句的结束条件
a:遇到break。
b:执行到程序的末尾
循环语句
1.for循环
for循环的格式:
for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}
执行流程:
A:首先执行初始化语句
B:其次执行判断条件语句,看其返回值
如果是true,就继续
如果是false,循环结束
C:执行循环体语句
D:执行控制条件语句
E:回到B
class ForDemo2 { public static void main(String[] args) { //在控制台输出10次HelloWorld for(int x=0; x<10; x++) { System.out.println("HelloWorld"); } System.out.println("--------------"); //初始化不从0开始 for(int x=1; x<=10; x++) { System.out.println("HelloWorld"); } for(int x=1; x<11; x++) { System.out.println("HelloWorld"); } for(int x=10; x>0; x--) { System.out.println("HelloWorld"); } } }
2.while循环
while循环的格式:
while(条件表达式) {
语句体;
}
变形格式:
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
for(初始化语句;判断条件语句;控制条件语句) {
循环体语句;
}
由此可见while循环和for循环是可以等价转换的。
for和while的区别:
使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,
而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。
原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
场景区别:
for循环适合针对一个范围判断进行操作
while循环适合判断次数不明确操作
class WhileDemo2 { public static void main(String[] args) { int x = 0; while(x<10) { System.out.println(x); x++; } System.out.println(x+"---"); System.out.println("-----------"); for(int y=0; y<10; y++) { System.out.println(y); } //System.out.println(y+"---"); } }