疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java基础流程控制语句


 

 
1if语句与三元运算符
1.1 第一种格式
 
public static void if1(){
        int x = 3;
        //if后面必须是条件表达式结果为boolean类型
        if(x>1){
            System.out.println("yes");
        }
        System.out.println("over");
        //如果if控制的只有一条语句那么括号可以省略,
        if (x<1)
            System.out.println("HO");//if只控制里他最近的一条语句,如果要控制多条语句要用{}括起来
        System.out.println("NO");//该语句跟if没有关系,注意代码的层次感,不要将代码缩进
    }
1.2 第二种格式
public static void if2(){
        int y = 4;
        if(y>1){
            System.out.println("yes");
        }else{
            System.out.println("over");
        }
}
对于运算完有结果直接输出的可以用三元运算符来写
 
1.3 三元运算符(问号表达式)
好处:可以简化if else代码。 if else 结构简写格式:变量 = (条件表达式)?表达式1:表达式2;
弊端:因为是一个运算符,所以运算完必须要有一个结果
 
    如:
 
     String y;
    y = (4>7)?"yes":"no";
    System.out.println(y);
 
int a=9,b;
b = (a>1)?100:300;
 
 
if(a>1)
    b=100;
else
    b=300;
//这种运算完有结果的可以用三元运算符比较简单
public class twentyNine {
    public static void main(String[] args) {
        int num = 5,b;
        b = num>9? ++num : --num;
        System.out.println(b);
        
    
        Scanner input = new Scanner(System.in);
        
        int score = input.nextInt();
        
        String s = score>=60? "及格" : "不及格";
        
        System.out.println("你的成绩:"+s);
    }
}
1.4 第三种格式
 
public static void if3(){
        int n = 3;
        if(n>1)
            System.out.println("a");//只要有一个满足程序就结束,都不满足执行else最后结束
        else if (n>2)
            System.out.println("b");
        else if (n>3)
            System.out.println("c");
        else
            System.out.println("d");
    }
 
 
2 while循环语句
为了简化代码,让代码执行很多次
 
2.1 第一种格式:
while:先判断条件,只有条件满足才执行循环体
 
int x = 4;
        while(x<8)//如果后面加了;号就会一直判断x<8,(这里是条件表达式,结果一定要是
boolean类型,即结果一定要么是真ture要么是假false)
        {
           System.out.println("x="+x);
           x++;
           //System.out.println("x="+x++);//可以代替上面的 两条语句  该句既可以打印出x的值又可以将x自增
        }//没加括号只能控制最近的一条语句
2.2 第二种格式:
do while:无论条件是否满足先执行循环体一次后再判断条件,条件满足在继续执行循环体(循环体至少执行一次)
 
 int x = 4;
        
        do{
            System.out.println("x="+x);
            x++;//x自增后变成5后,再执行下面判断x是否小于8
        }while (x<8);
 
3 for循环语句
 
for循环的格式:
 
   for (初始化表达式;循环条件表达式 ;循环后的操作表达式 ){
     执行语句
}
 
public class ForDemo {
    public static void main(String[] args) {
        
        //int x = 3;只有程序读到这时才在内存中开辟空间,而且只要for循环结束内存空间就会被释放。
        //第一个只要是合法的表达式就行,第二个一定要是条件表达式
        for (int x = 3; x<8 ; x++ ){
            System.out.println("x="+x);
            //x只在该括号内有效
        }
        //System.out.println("x======="x);//编译错误,找不到x这个变量
        
        
        int y =3;
        while(y<8)
        {
            System.out.println("y="+y);
        }
        System.out.println("y======="+y);//结果可以打印出y的值
        
        
        /*
        1.变量有自己的作用域,对应for来说,如果将用于控制循环的增量定义在for语句中,那么该变量只在for语句中有效
        for语句执行完毕,该变量在内存中被释放
 
        2.for和while可以进行互换,用哪个都可以,但是如果需要定义循环增量,用for合适些,比较节省内存
        */
    }
 
}
for循环使用时常见的问题:
 
 
for (System.out.println("a");System.out.println("b") ;System.out.println("c") ){
            System.out.println("d");
        }
        //没有结果,因为条件表达式既不是真也不是假所以没结果
public class ForTest1 {
    public static void main(String[] args) {
        int x =1;
        for (System.out.println("a");x<3 ;System.out.println("c") ){
            System.out.println("d");
            x++;//也可以放在for括号后面,用逗号隔开就行    
        }
        //结果是:a d c d c
        //for(这里可以多表达式只要用,隔开)    
    }
}
 
无限循环的最简单表现形式:
 
for (; ; ){}//对于for语句条件表达式只要不写默认就是true
 
while(true){}
 
 
4 switch分支语句 4.1 swithc特点:只接受byte,shotr,int,char
语句的定义顺序可以随意的,但执行顺序还是从第一个case开始
 
public class SwitchDemo {
    public static void main(String[] args) {
        int x = 4;
 
        switch (x) {
            case 1:
                System.out.println("a");
                break;
            case 2:
                System.out.println("b");
                break;
            case 3:
                System.out.println("c");
                break;
            case 4:
                System.out.println("d");
                break;//遇到满足条件的就执行该语句并跳出switch语句
            default:
                System.out.println("e");
                break;//可以省略不写,遇到括号就会结束
                
            }
    }
}
 
4.2 使用switch需注意的地方:
无论default放在什么位置,运算都是从第一个case开始,所有case判断完才执行default
所有case不符合,执行default,之后没有break继续执行下面的语句不再判断case,只执行语句,直到遇到break或括号结束switch语句
 
public class SwitchDemo {
    public static void main(String[] args) {
        int x = 4;
        switch(x)
        {
            default:
                System.out.println("e");
                //break;
            case 1:
                System.out.println("a");
                //break;
            case 2:
                System.out.println("b");
                break;
            case 3:
                System.out.println("c");
                break;
        }
    }
}
4.3 与if语句的比较
什么时候用if 什么时候用switch(if和switch语句很像 具体什么场景下 应用那个语句呢)
 
    1、如果具体数值不多而且符合byte short int char这四种类型
 
    2、虽然两个语句都可以使用,建议使用switch语句,因为效率稍高
 
    3、其他情况:对区间判断,对结果为boolean类型判断使用if if的使用范围更广
 
 
5 foreach循环语句: 5.1 foreach介绍
 
1、格式:
 
     for(类型 变量名称:被遍历数组或集合){
        其他操作(输出操作)
     }
 
    
 
2、作用:
 
     主要是用于简化书写
 
 
 
 
5.2 foreach循环语句遍历数组:
 
public class oneHundredAndEight_oneHundredAndNine {
    public static void main(String[] args) {
        String[] names = {"萌萌","纯纯","爱爱","凤凤","梦梦"};
        
        for(String x:names){
            System.out.print(x+" ");
        }
    }
}
public class ForEachDemo {
    public static void main(String[] args) {
        int[] arr = {3,5,6,7};
        for (int i : arr ){
            System.out.println(i);
        }
    }
}
 
5.3 foreach循环语句遍历集合
List集合有两种取出方式,一种是迭代器,和for循环,用get()方法按着角标取出元素
Set集合只有一种取出方式就是迭代器
 
凡是支持迭代器的集合都可以使用高级for
 
对集合进行遍历,只能获取元素,但是不能对集合进行过多的操作
 
迭代器除了遍历还可以对集合中的元素进行remove
如果是ListIterator还可以在遍历过程中对集合进行增删改查的动作
 
import java.util.ArrayList;
 
public class ForEachDemo {
    public static void main(String[] args) {
        ArrayList<String> al = new ArrayList<String>();
 
        al.add("abc2");
        al.add("abc3");
        al.add("abc1");
        /*
        for (Iterator<String> it = al.iterator() ;it.hasNext() ; ){
            System.out.println(it.next());
        }
        */
 
        for(String s : al){
            //s = "kk";//s不会改变集合中的元素,只能对集合中的元素取出,不能做修改动作
            System.out.println(s);
        }
        System.out.println(al);//结果还是原集合
    }
}
5.4 传统for和高级for的区别:
1、传统for:可以完成对语句执行很多次,因为可以定义控制循环增量和条件
 
2、高级for有一个局限性,必须有被遍历的目标,而且可能会产生很多的垃圾,在一些内存比较紧张的项目中不建议使用,比如在安卓程序中,建议在遍历数组的时候还是希望使用传统for,因为传统for可以使用角标
 
3、高级for只能遍历单例集合,要变量双列集合(如Map集合),可以将Map集合变成单例集合再使用
 
高级for
 
import java.util.HashMap;
 
public class ForEachDemo {
    public static void main(String[] args) {
        HashMap<Integer,String> hm = new HashMap<Integer,String>();
        hm.put(1,"a");
        hm.put(2,"a");
        hm.put(3,"a");
        //先用keySet或entrySet方法变成Set集合,在使用高级for
        for (Integer key : hm.keySet()) {
            String value = hm.get(key);
            System.out.println(key+"...."+value);
        }
    }
}