zoukankan      html  css  js  c++  java
  • java基础(二):流程控制与数组

    四、流程控制与数组

    4.1、顺序结构:程序从上到下,一行一行执行。

    4.2、分支结构:

      4.2.1、if条件语句:

      使用 布尔表达式 或 布尔值 作为分支条件来进行分支控制。

      注意1:使用 if else 语句基本规则:总是优先把包含范围小的条件放在前面处理

    1)、if(){...},
    2)、if(){...}else{...},
    3)、if(age>60){
          System.out.println("老年人");
        }else if(age>40){
          System.out.println("中年人");
        }else if(age>20){
          System.out.println("青年人");
        } 
    等同于:
        if(age>60){
          System.out.println("老年人");
        }else if(age>40 && !(age>60)){ //else的含义是"否则",隐含条件是:对前面的条件取反
          System.out.println("中年人"); 
        }else if(age>20 &&!(age>60) && !(age>40 && !(age>60)){ //else的含义是"否则",隐含条件是:对前面的条件取反
          System.out.println("青年人"); 
        } 

     

      4.2.2、switch分支语句:

      switch语句由一个控制表达式和多个case标签组成。

      注意1:控制表达式的数据类型只能是byte、short、char、int 四种整数类型,枚举类型 和 String类型(从Java 7才允许)。

      注意2case后面的break不要省略,否则会继续执行后面的代码(不会再去判断后面的case、default条件)。

    public class TestSwitch{
        public static void main(){
            char score = 'C';
            switch(score){
                case 'A':
                    System.out.println("优秀");
                    break;
                case 'B':
                    System.out.println("良好");
                    break;
                case 'C':
                    System.out.println("一般");
                    break;
                case 'D':
                    System.out.println("及格");
                    break;
                case 'E':
                    System.out.println("不及格");
                    break;
                default:
                    System.out.println("输入有误");
            }
        }  
    }        

     

     4.3、循环结构

      4.3.1、while、do  while 循环

      注意1:while循环,先判断循环条件,为真则执行循环体;

      注意2: do while循环,先执行循环体,然后判断循环条件,为真则执行下一次循环,否则中止循环(至少执行一次);

      注意3:循环条件一定要保证有变成false的时候,否则死循环。

    public class TestWhile{
        public static viod main(String[] args){
    
            //1、while循环,先判断循环条件,为真则执行
            int count = 0; //初始化语句
            while(count<10){ //循环条件,一定要保证有变成false的时候,否则死循环
                //循环体
                System.out.println(count); 
                count++; //迭代语句
            }
            System.out.println("while循环结束!"); 
    
            //2、do while循环,先执行循环体,然后判断循环条件,为真则执行下一次循环,否则中止循环
            int sum= 1; //初始化语句
            do{
                //循环体
                System.out.println(sum); 
                sum++; //迭代语句
            }
            while(sum<10);//循环条件,一定要保证有变成false的时候,否则死循环
            System.out.println("do while循环结束!"); 
        }
    }        

     

      4.3.2、for、增强for、foreach循环

      效率:foreach(方式5) > 增强for循环(方式4) > 普通for循环

    public class TestFor{
    
        //方式1:最普通for循环
        public static void test1(List<String> list) {
            for (int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i));
            }
        }
    
        //方式2:稍微高级一点
        public static void test2(List<String> list) {
            for (int i = 0,lenth=list.size(); i < lenth; i++) {
                System.out.println(list.get(i));      
            }
        }
    
        //方式3:Iterator遍历
        public static void test3(List<String> list) {
            Iterator<String> iterator = list.iterator();
            while(iterator.hasNext()){
                System.out.println(iterator.next());
            }
        }
    
        //方式4:增强for循环,效率很棒
        public static void test4(List<String> list){
            for(String str:list){
                System.out.println(str);
            }
        }
    
        //方式5:java8以后新增forEach循环,效率最好但不方便计数(lambda表达式)
        public static void test5(List<String> list){
            //list.forEach(System.out::println);和下面的写法等价
            list.forEach(str->{
                System.out.println(str);
            });
        }
    
        //方式6
        public static void test6(List<String> list) {
            list.iterator().forEachRemaining(str->{
                System.out.println(str);
            });
        }
    
    }            

     

     4.4、控制循环结构

      4.4.1、使用 break 结束循环

      break 用于完全结束一个循环,跳出循环体;

      break 还能结束其所在的外层循环(这时需要在break后面紧跟一个标签,该标签必须放在循环语句前面,用于标识一个外层循环);

    public class TestBreak{
      public static void main(String[] args){
            //1、一个简单的for循环,break结束一个循环
            for(int m=0; m<5; m++){
                System.out.println("m的值是:"+ m);
                if(m==1){
                    break; //执行该语句时将结束for循环
                }
            }
            /* 
         运行结果: m的值是:0 m的值是:1
    */ //2、break配合标签使用,可以结束一个其外层的循环 //外层循环,outer作为一个标识符,后面是冒号(:) outer: for(int i=0; i<5; i++){ //内层循环 for(int j=0; j<3; j++){ System.out.println("i的值是:"+ i+ ", j的值是:"+ j); if(j==1){ break outer; //跳出outer标识的循环 } } } /*
         与continue的区别:i>0后面的值不会执行
         运行结果: i的值是:0, j的值是:0 i的值是:0, j的值是:1
    */ } }

     

      4.4.2、使用 continue 结束本次循环

      continue 用于中止本次循环(略过本次循环剩下的语句),开始下一次循环;

      continue 也能中止其所在的外层循环(这时需要在continue后面紧跟一个标签,该标签必须放在循环语句前面,用于标识一个外层循环);

    public class TestContinue{
        public static void main(String[] args) {
            //外层循环,outer作为一个标识符,后面是冒号(:)
            outer:
            for(int i=0; i<3; i++) {
                //内层循环
                for(int j=0; j<2; j++) {
                    System.out.println("i的值为:" + i + ", j的值为:" + j);
                    if(j==1) {
                        //跳出outer标签所指定的循环
                        continue outer;
                    }
                }
            }
            /* 
         与break的区别:i>0后面的值也执行了
         运行结果如下: i的值为:0, j的值为:0 i的值为:0, j的值为:1 i的值为:1, j的值为:0 i的值为:1, j的值为:1 i的值为:2, j的值为:0 i的值为:2, j的值为:1
    */ } }

      4.4.3、使用 return 结束方法

     

     4.5、数组

      数组也是一种数据类型(引用类型);

      必须先定义、初始化数组(分配内存空间和赋初始值),然后才能使用数组。

      静态初始化:

        int[] intArr = new int[]{ 2, 4, 6, 8, 10 }    //初始化时,只指定数组元素的初始值,不指定数组长度

        Object objArr = new String[]{ "Java", "Python" }    //初始化时,元素类型可以是定义时的子类

      动态初始化:只指定数组的长度,系统为每个数组元素赋初始值。

        int[] intArr = new int[5];

        Object objArr = new String[4];

      JDK1.5提供了foreach循环(此处应该是增强的for循环),遍历数组和集合时:无需获得数组长度,无需根据索引访问数组元素,无需循环条件,无须循环迭代语句。

    public class TestForEach{
        public static void main(String[] args){
            String[] books = {"语文", "数学", "英语" };
            //使用foreach循环来遍历数组元素:无需获得数组长度,无需根据索引访问数组元素,无需循环条件,无须循环迭代语句
            for(String book : books){
                System.out.println(book);
            }
        }
    }    

      

    4.6、深入数组

      4.6.1、内存中的数组

      数组 是一种引用数据类型,数组引用变量 存储在 栈(stack)内存 中,实际的数组元素存储在 堆(heap)内存 中。

      数组 只能通过 引用变量 访问 堆内存中的数组元素

      栈内存:存放数组变量

      堆内存:存放对象,以便反复利用。

     

      4.6.2、基本类型数组的初始化

     

      4.6.3、引用类型数组的初始化

     

      4.6.4、操作数组的工具类

     

  • 相关阅读:
    第一篇:理论篇
    day 3:注释,缩进
    HTML的报告
    SAP DIALOG屏幕新增搜索帮助
    财务凭证科目替代(未写完)
    表维护生成器本地转请求包
    web安全之SQL注入
    Ubuntu16.04 下安装Sublime Text 3
    ubuntu16.04 下安装配置python3.6
    Ubuntu 16.04 下安装 PyCharm
  • 原文地址:https://www.cnblogs.com/mingyue1818/p/14435946.html
Copyright © 2011-2022 走看看