条件语句


  • while 循环
//boolean表达式为true则会?直执?
while(布尔表达式){
   //循环执?的内容
}

# 如下是死循环:
    public static void test1(){
        int i = 10;
        while (i<20){

            System.out.println("我是循环被执行了i="+i);
            i++;  // i = i+1;
        }
        System.out.println("循环结束,i="+i);
    }
  • do while 循环
do{
   //循环执?的内容
}while(布尔表达式);

# 如下是死循环
    public static void test2(){
        int i = 20;
        do{
            System.out.println(" do while 我是循环被执行了i="+i);
            i++;
        }while (i<20);
        System.out.println("do while 循环结束,i="+i);
    }
  • while和do while的区别
while的话?定需要满?条件才会执?
do while的话,会先执??次循环内容,再判断是否继续执?
  • 普通for循环
for(初始化; 布尔表达式; 更新变化条件){
   //循环执?的内容
}

//例?
for(int i=0; i<20;i++){
   System.out.println(i);
}

# 循环过程如下:
* “初始化” ?般是初始化?个变量,只执??次,也可以是空语句
* 接着判断 “布尔表达式”,如果为true,则执?循环内容;为false则终?循环
* “更新变化条件” 执?循环内容后,更新循环控制变量
* 再次检测 “布尔表达式”,如果为true,则执?循环内容;为false则终?循环
  • 增强for循环
for(声明变量类型:被遍历的集合或者数组){
   //循环内容
}

//例?
    public static void test2(){
        String [] array = {"monkey","dog","cat","bird","tiger"};
        for(String str : array ){
            System.out.println("动物类型="+str);
        }
    }
  • 循环退出
break 关键字
跳出当前层的循环体,执?循环体下?的语句

# 如下
    public static void test1(){
        String [] array =  {"monkey","dog","cat","bird","tiger","fish"};
        for(String animal : array){
            System.out.println("当前的动物是="+animal);
            //字符串比较是否相等,不能用 ==,应该是用 equal方法
            if("cat".equals(animal)){
                System.out.println("发现cat了");
                break;
            }
        }
        System.out.println("循环结束");
    }

# 控制台
当前的动物是=monkey
当前的动物是=dog
当前的动物是=cat
发现cat了
循环结束
  • 循环跳过
continue 关键字
跳过当前循环,执?下?次循环, (忽略当前循环内容,直接执?下?次)

# 如下
    public static void test2(){
        String [] array =  {"monkey","dog","cat","bird","tiger","fish"};
        for (String animal:array){
            if("cat".equals(animal)){
                System.out.println("发现cat了");
                continue;
            }
            System.out.println("当前的动物是="+animal);
        }
        System.out.println("循环结束");
    }

当前的动物是=monkey
当前的动物是=dog
发现cat了
当前的动物是=bird
当前的动物是=tiger
当前的动物是=fish
循环结束
  • if 语句
//如果布尔表达式为true,则执?花括号??的内容,如果语句体只有?句,则花括号可以不写,但是推荐写
if(布尔表达式){
   //语句体
}

# 如下
    int age =10;
    if(age<20){
        System.out.println("年龄小于20岁");
    }
  • if else 语句的使?,如果if条件为false,则else??的内容会被执?
if(布尔表达式){
   //语句体
}else{
   //语句体
}

# 如下
    int age =20;
    if(age<20){
        System.out.println("年龄小于20岁");
    } else {
        System.out.println("年龄大于或者等于20岁");
    }
  • if else if else 语句的使?,?于判断多个条件
if(布尔表达式1){
   //语句体
}else if(布尔表达式2){
   //语句体
}else if(布尔表达式3){
   //语句体
}else if(布尔表达式4){
   //语句体
}else{
   //语句体
}

# 如下
    int age = 45;
    if(age<10){
        System.out.println("年龄小于10岁");
    } else if(age>=10 && age <=20){
        System.out.println("年龄大于等于10岁,小于等于20岁");
    } else if(age>=21 && age<=30){
        System.out.println("年龄大于等于21岁,小于等于30岁");
    }else {
        System.out.println("年龄大于31岁");
    }
  • if语句注意点
if 语句?多有 1 个 else 语句,可以0个else,且else 语句在最后,类似前?的都不成功,最后?定执?
if 语句可以有多个 else if 语句,它们必须在 else 语句之前
如果其中?个 else if 语句为 true,其他的 else if 以及 else 语句都将跳过执?
  • if else 嵌套
可以在if else??嵌套多层if else

# 如下
int age = 30;
if(age > 10){
    if(age > 18){
        // 语句体
        if(age>25){
            // 语句体
        }else{
            // 语句体
        }
    }else{
        // 语句体
    }
}else{
    // 语句体
}
  • 条件语句 switch case
switch(表达式){
   case 表达式常量1:语句1;
   break;
   case 表达式常量2:语句2;
   break;
   // ......
   //可以有任意数量的case语句
   case 表达式常量n:语句n;
   break;
   default : //可选
   //语句
}

# 如下
    public static void main(String [] args){
        int day = 10;
        String content = "";
        switch (day){
            case 1: content="周一";
                break;
            case 2: content="周二";
                break;
            case 3: content="周三";
                break;
            case 4: content="周四";
                break;
            case 5: content="周五";
                break;
            default:
                content="无效数字";
        }
        System.out.println(content);
    }
  • Switch语句注意点
Switch和if语句都是Java的选择语句,这两种都是允许在程序运?时控制程序的执?过程
switch 语句可以拥有多个 case 语句,每个 case 后?跟?个常量和冒号
default就是如果没有符合的case 就执?它,default并不是必须的
当遇到break语句时,switch语句终?。程序跳转到switch语句后?的语句执?
case语句不必须包含break语句, 没有break语句,程序会执?下?条case语句,直到出现break语句为?
jdk7之前 switch的case语句?持int,short,byte,char类型的值,jdk7后?持String类型
  • static关键字
static 修饰的?法或变量,优先于对象执?,所以内存有会现有 static修饰的内容,后有对象的内容
可以?来修饰类的成员?法、类的成员变量,还可以编写static静态代码块
修饰变量就是类变量,修饰?法就是类?法
总结: 类变量或者类?法,可以直接通过类名.?法名或者变量名进?调?,不?经过对象

# 如下
public class Student{
   static int age;
   static String name;
   // 类方法
   public static void sleep(){
   } 
}
  • static变量也称作静态变量
和?静态变量的区别是,静态变量被所有的对象所共享,在内存中只有?份,它当且仅当在类初次加载时会被初始化。?静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有d 的副本互不影响

static成员变量的初始化顺序按照定义的顺序进?初始化
  • static?法也称作静态?法
不依赖于任何对象就可以进?访问,类名.?法名
不能访问类的?静态成员变量和?静态成员?法

注意事项:
静态?法不能直接访问?静态变量
静态?法当中不能使?this
核?:?个类?? static修饰的不能访问?static修饰的成员或者?法,??static修饰的可以访问static修饰的成员或者?法

//静态变量
static int age;
//静态?法
public static int getAge(){
 return 5;
}
  • 静态代码块
加载类的时候,静态代码块会被执??次,且只能执??次
静态内容优先于?静态内容,所以静态代码?构造?法先执?
使?场景:?来?次性对静态成员变量进?赋值,或者类资源初始化等操作

public class 类名{
   static {
       //静态代码块
   }
}

# 如下
public class Student {
    static String sex;
    static int age;

    static {
        sex = "男生";
        System.out.println("静态代码块被执行了");
    }
}