目录
一、条件语句
在Java中,条件语句主要分为两大类:if语句和switch语句。
1、if语句
1.1 if语法
该语法的关系表达式的结果为布尔类型,如果结果为true,则进入语句体继续执行,否则跳出该循环。
if(关系表达式){
语句体;
}
1.2 if...else语法
if(关系表达式){
语句体1; //关系表达式的结构为true,执行该语句体。
}else{
语句体2; //关系表达式的结构为false,执行该语句体。
}
1.3 if...else if...else语法
if...else if...else是多分支条件判断语句,与下边要讲的switch语句可以相互转化;
注意事项:一个if语句之多有一个else,至少有两个else if语句;
每一次循环只能进入一个条件分支,其他分支直接跳过不执行;
if(关系表达式1){
语句体1; //关系表达式1的执行结果为true,执行语句体1
}else if(关系表达式2){
语句体2; //关系表达式2的执行结果为true,执行语句体2
}
...
else{
语句体n+1; //以上所有关系表达式的执行结果为false,执行语句体n+1
}
示例代码:
import java.util.Scanner;
public class OperatorDemo12 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个星期数(1-7):");
int week = sc.nextInt();
if(week == 1){
System.out.println("今天是星期一");
}else if(week == 2){
System.out.println("今天是星期二");
}else if(week == 3){
System.out.println("今天是星期三");
}else if(week == 4){
System.out.println("今天是星期四");
}else if(week == 5){
System.out.println("今天是星期五");
}else if(week == 6){
System.out.println("今天是星期六");
}else {
System.out.println("今天是星期日");
}
}
}
2、switch语句
switch语法是针对多重条件的语句,将表达式的执行结果与case后的值进行比较,若相等将执行case对应的语句体,否则一致往下进行对比,直至对比不成功,则执行default的语句体。
注意:(1)每个case语句后必须加上break,否则会出现case穿透现象,即执行完不带break的case的语句体,会继续执行下一个case的语句体。
(2)case里的语句不用花括号,且case里的break不能省略;但default里的break可以省略。
(2)case后的常量表达式相同时,这几个case可以共用一个语句体;
例如:
case 1:
case 2:
case 3:
语句体1;
break;
语法格式:
switch语句格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
...
default:
语句体n+1;
break; //此处break可以没有,也可以填写
}
示例代码:
随意输入一个数字,判断为星期几
import java.util.Scanner;
public class SwitchDemo {
public static void main(String[] args) {
System.out.println("开始");
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个星期数:");
int week = sc.nextInt();
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;
}
}
}
二、循环语句
1、for循环
for(初始化语句;条件判断语句;条件控制语句){
循环体;
}
执行流程:
(1)先执行初始化语句,
(2)执行条件判断语句,如果为true则继续执行(3);否则循环结束;
(3)执行循环体语句
(4)执行条件控制语句
(5)回到(2)
示例代码:
public class ForDemo02 {
public static void main(String[] args) {
//打印1-5
for (int i = 1;i<=5;i++){
System.out.println(i);
}
System.out.println("--------");
//打印5-1
for (int j = 5;j >= 1;j--){
System.out.println(j);
}
}
}
2、增强for循环
for(元素数据类型 变量名 : 集合/数组对象名){
循环体;
}
增强for循环内部原理时一个Iterator迭代器
public class ForDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("hello");
list.add("world");
list.add("java");
for(String s : list) {
System.out.println(s);
}
}
3、while循环
当条件判断语句一直为true,则循环一直进行,
初始化语句;
while(条件判断语句){
循环体;
条件控制语句;
}
示例代码:
已知珠穆朗玛峰的高度,一张白纸初始厚度为0.1米,问白纸要折叠多少次才能够达到珠穆朗玛峰的高度?
public class WhileDemo01 {
public static void main(String[] args) {
//珠穆朗玛峰案例
int hight = 8844430;
int count = 0;
double paper = 0.1;
while (paper < hight) {
paper *= 2;
count++;
}
System.out.println("总共折叠了" + count + "次");
}
}
4、do...while循环
此循环先执行一次语句体再去判断条件是否满足,如果满足就会继续执行,但无论是否满足条件,初始循环体必须执行一次。
初始化语句;
do{
循环体;
条件控制语句;
}while(条件判断语句);
示例代码:
public class DoWhileDemo01 {
public static void main(String[] args) {
//需求:在控制台输出5次”HelloWorld“
int j = 1;
do {
System.out.println("HelloWorld");
j++;
}while(j<=5);
}
}
5、三种循环的区别
(1)for循环和while循环都是先执行条件判断语句,在执行循环体语句;
do...while循环是先执行循环体语句,在执行条件判断语句。
(2)for循环执行完,变量不能在使用;while循环执行完,变量仍然可以使用。
因为for循环的变量定义在方法的声明上,属于局部变量;而while循环的变量定义在方法外,属于成员变量,
java中作用域的分类:
全局变量:也就是属性(成员变量),作用域为整个类体
局部变量:也就是除了属性之外的其他变量,作用域为定义它的代码块中。
也就是说,方法体内可以使用外部的成员变量,而方法体外不可以使用方法体内部定义的局部变量。
6、三种循环的死循环
(1)for循环
for循环的条件判断语句为true时,循环一直会无限循环进行下去
for(初始化语句;true;条件控制语句){
循环体;}
(2)while循环
条件判断语句为真,循环一直无限进行
while(true){
循环体语句;
}
(3)do...while循环
do...while循环先执行一次循环体,进行条件判断时一直为true,循环体一直会进行下去
do{
循环体语句;
}while(true);