zoukankan      html  css  js  c++  java
  • Java 语言基础 02

    语言基础·二级

    顺序结构语句

    * A:什么是流程控制语句
        * 流程控制语句:可以控制程序的执行流程。

    * B:流程控制语句的分类
        * 顺序结构
        * 选择结构
        * 循环结构

    * C:执行流程:
        * 从上往下,依次执行。

    * D:案例演示
        * 输出几句话看效果即可

    选择结构if语句格式

    * A:选择结构的分类
        * if语句
        * switch语句

    * B:if语句有几种格式
        * 格式1
        * 格式2
        * 格式3

    * C:if语句的格式1
            if(比较表达式) {
                语句体;
            }

    * D:执行流程:
        * 先计算比较表达式的值,看其返回值是true还是false。
        * 如果是true,就执行语句体;
        * 如果是false,就不执行语句体;

    * A:if语句的格式2
            if(比较表达式) {
                语句体1;
            }else {
                语句体2;
            }

    * B:执行流程:
        * 首先计算比较表达式的值,看其返回值是true还是false。
        * 如果是true,就执行语句体1;
        * 如果是false,就执行语句体2;

    * C:案例演示
        * a:获取两个数据中较大的值
        * b:判断一个数据是奇数还是偶数,并输出是奇数还是偶数

        * 注意事项:else后面是没有比较表达式的,只有if后面有。

    * A:if语句的格式3:
            if(比较表达式1) {
                语句体1;
            }else if(比较表达式2) {
                语句体2;
            }else if(比较表达式3) {
                语句体3;
            }
            ...
            else {
                语句体n+1;
            }

    * B:执行流程:
        * 首先计算比较表达式1看其返回值是true还是false,
        * 如果是true,就执行语句体1,if语句结束。
        * 如果是false,接着计算比较表达式2看其返回值是true还是false,
        
        * 如果是true,就执行语句体2,if语句结束。
        * 如果是false,接着计算比较表达式3看其返回值是true还是false,    
        * 如果都是false,就执行语句体n+1。

    * C:注意事项:最后一个else可以省略,但是建议不要省略,可以对范围外的错误值提示 

    if语句的格式2和三元的相互转换

    * A:案例演示
        * if语句和三元运算符完成同一个效果

    * B:案例演示
        * if语句和三元运算符的区别
        * 三元运算符实现的,都可以采用if语句实现。反之不成立。    
        * 什么时候if语句实现不能用三元改进呢?
            * 当if语句控制的操作是一个输出语句的时候就不能。
            * 为什么呢?因为三元运算符是一个运算符,运算符操作完毕就应该有一个结果,而不是一个输出。

    选择结构if语句格式3练习

    * A:练习1
            需求:键盘录入一个成绩,判断并输出成绩的等级。
            90-100 优
            80-89  良
            70-79  中
            60-69  及
            0-59   差

    * B:练习2
        * 需求:
            * 键盘录入x的值,计算出y的并输出。
            * x>=3    y = 2 * x + 1;
            * -1<x<3    y = 2 * x;
            * x<=-1    y = 2 * x - 1;

    选择结构switch语句的格式及其解释

    * A:switch语句的格式
            switch(表达式) {
                  case 值1:
                    语句体1;
                    break;
                    case 值2:
                    语句体2;
                    break;
                    …
                    default:    
                    语句体n+1;
                    break;
            }

    * B:switch语句的格式解释

    * C:面试题
        * byte可以作为switch的表达式吗?
        * long可以作为switch的表达式吗?
        * String可以作为switch的表达式吗?

    * C:执行流程
        * 先计算表达式的值
        * 然后和case后面的匹配,如果有就执行对应的语句,否则执行default控制的语句

    选择结构switch语句的注意事项

    * A:案例演示
        * a:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的

        * b:default可以省略吗?
            * 可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
            * 特殊情况:
                * case就可以把值固定。
                * A,B,C,D

        * c:break可以省略吗?
            * 最后一个可以省略,其他最好不要省略
            * 会出现一个现象:case穿透。
            * 最终我们建议不要省略

        * d:default一定要在最后吗?
            * 不是,可以在任意位置。但是建议在最后。

        * e:switch语句的结束条件
            * a:遇到break就结束了
            * b:执行到switch的右大括号就结束了

    选择结构switch语句练习

    * A:看程序写结果:
            int x = 2;
            int y = 3;
            switch(x){
                default:
                    y++;
                    break;
                case 3:
                    y++;
                case 4:
                    y++;
            }
            System.out.println("y="+y);
        
    * B:看程序写结果:
            int x = 2;
            int y = 3;
            switch(x){
                default:
                    y++;
                case 3:
                    y++;
                case 4:
                    y++;
            }
            System.out.println("y="+y);

    选择结构if语句和switch语句的区别

    * A:总结switch语句和if语句的各自使用场景
    *     switch建议判断固定值的时候用
    *     if建议判断区间或范围的时候用

    * B:案例演示
        * 分别用switch语句和if语句实现下列需求:
            * 键盘录入月份,输出对应的季节

    循环结构概述和for语句的格式及其使用

    * A:循环结构的分类
        * for,while,do...while 

    * B:循环结构for语句的格式:

            for(初始化表达式;条件表达式;循环后的操作表达式) {
                循环体;
            }

    * C执行流程:
        * a:执行初始化语句
        * b:执行判断条件语句,看其返回值是true还是false
            * 如果是true,就继续执行
            * 如果是false,就结束循环
        * c:执行循环体语句;
        * d:执行循环后的操作表达式
        * e:回到B继续。

    * D:案例演示
        * 在控制台输出10次"helloworld"

    循环结构while语句的格式和基本使用

    * A:循环结构while语句的格式:         
            while循环的基本格式:
            while(判断条件语句) {
                循环体语句;
            }
            
            完整格式:
            
            初始化语句;
            while(判断条件语句) {
                 循环体语句;
                 控制条件语句;
            }

    * B:执行流程:
        * a:执行初始化语句
        * b:执行判断条件语句,看其返回值是true还是false
            * 如果是true,就继续执行
            * 如果是false,就结束循环
        * c:执行循环体语句;
        * d:执行控制条件语句
        * e:回到B继续。

    * C:案例演示
        * 需求:请在控制台输出数据1-10

    循环结构do...while语句的格式和基本使用

    * A:循环结构do...while语句的格式: 
            do {
                循环体语句;
            }while(判断条件语句);
            
            完整格式;
            初始化语句;
            do {
                循环体语句;
                控制条件语句;
            }while(判断条件语句);

    * B:执行流程:
        * a:执行初始化语句
        * b:执行循环体语句;
        * c:执行控制条件语句
        * d:执行判断条件语句,看其返回值是true还是false
            * 如果是true,就继续执行
            * 如果是false,就结束循环
        * e:回到b继续。

    * C:案例演示
        * 需求:请在控制台输出数据1-10

    循环结构三种循环语句的区别

    * A:案例演示
        * 三种循环语句的区别:
        * do...while循环至少执行一次循环体。
        * 而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。

    * B:案例演示
        * for循环和while循环的区别:
            * A:如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不知道用谁就用for循环。因为变量及早的从内存中消失,可以提高内存的使用效率。

    控制跳转语句break语句

    * A:break的使用场景
        * 只能在switch和循环中 

    控制跳转语句continue语句

    * A:continue的使用场景
        * 只能在循环中 

    控制跳转语句标号

    * 标号:标记某个循环对其控制
    * 标号组成规则:其实就是合法的标识符


     方法概述和格式说明

    * A:为什么要有方法
        * 提高代码的复用性 

    * B:什么是方法
        * 完成特定功能的代码块。 

    * C:方法的格式
            修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
                方法体语句;
                return 返回值; 
            } 

    * D:方法的格式说明
        * 修饰符:目前就用 public static。后面我们再详细的讲解其他的修饰符。
        * 返回值类型:就是功能结果的数据类型。
        * 方法名:符合命名规则即可。方便我们的调用。
        * 参数:
            * 实际参数:就是实际参与运算的。
            * 形式参数;就是方法定义上的,用于接收实际参数的。
        * 参数类型:就是参数的数据类型
        * 参数名:就是变量名
        * 方法体语句:就是完成功能的代码。
        * return:结束方法的。
        * 返回值:就是功能的结果,由return带给调用者。 

    方法的注意事项

    * A:方法调用(有具体返回值)
        * a:单独调用,一般来说没有意义,所以不推荐。
        * b:输出调用,但是不够好。因为我们可能需要针对结果进行进一步的操作。
        * c:赋值调用,推荐方案。

    * B:案例演示
        * a:方法不调用不执行
        * b:方法与方法是平级关系,不能嵌套定义
        * c:方法定义的时候参数之间用逗号隔开
        * d:方法调用的时候不用在传递数据类型
        * e:如果方法有明确的返回值,一定要有return带回一个值

    方法重载概述和基本使用

    * A:方法重载概述
        * 求和案例
            * 2个整数
            * 3个整数
            * 4个整数

    * B:方法重载:
        * 在同一个类中,方法名相同,参数列表不同。与返回值类型无关。    
        * 参数列表不同:
            * A:参数个数不同
            * B:参数类型不同
            * C:参数的顺序不同(算重载,但是在开发中不用)

    数组概述和定义格式说明

    * A:为什么要有数组(容器)
        * 为了存储同种数据类型的多个值

    * B:数组概念
        * 数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
        * 数组既可以存储基本数据类型,也可以存储引用数据类型。

    * C:数组定义格式
        数据类型[] 数组名 = new 数据类型[数组的长度];

    数组的初始化动态初始化

    * A:什么是数组的初始化
        * 就是为数组开辟连续的内存空间,并为每个数组元素赋予值 

    * B:如何对数组进行初始化
        * a:动态初始化 只指定长度,由系统给出初始化值
            * int[] arr = new int[5];     
        * b:静态初始化 给出初始化值,由系统决定长度    

    * C:动态初始化的格式:
        * 数据类型[] 数组名 = new 数据类型[数组长度];

    * D:案例演示     * 输出数组名称和数组元素

    Java中的内存分配以及栈和堆的区别

    * A:栈(掌握)
        * 存储局部变量 

    * B:堆(掌握)
        * 存储new出来的数组或对象 

    * C:方法区
        * 面向对象部分讲解 

    * D:本地方法区
        * 和系统相关 

    * E:寄存器
        * 给CPU使用

    详见类一篇随笔,java虚拟机

    数组操作的两个常见小问题越界和空指针

    * A:案例演示
        * a:ArrayIndexOutOfBoundsException:数组索引越界异常
            * 原因:你访问了不存在的索引。

        * b:NullPointerException:空指针异常
            * 原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。
            * int[] arr = {1,2,3};
            * arr = null;
            * System.out.println(arr[0]);

    数组的操作1遍历

    * A:案例演示
        * 数组遍历: 就是依次输出数组中的每一个元素。
        * 数组的属性: arr.length数组的长度
        * 数组的最大索引: arr.length - 1;
         
                public static void print(int[] arr) {
                    for (int i = 0;i < arr.length ;i++ ) {
                        System.out.print(arr[i] + " ");
                    }
                }

    数组的操作2获取最值

    * A:案例演示
        * 数组获取最值(获取数组中的最大值最小值)
            
                public static int getMax(int[] arr) {
                    int max = arr[0];
                    for (int i = 1;i < arr.length ;i++ ) {            //从数组的第二个元素开始遍历
                        if (max < arr[i]) {                            //如果max记录的值小于的数组中的元素
                            max = arr[i];                            //max记录住较大的
                        }
                    }
            
                    return max;
                }

    数组的操作3反转

    * A:案例演示
        * 数组元素反转(就是把元素对调)
                
                public static void reverseArray(int[] arr) {
                    for (int i = 0;i < arr.length / 2 ; i++) {
                        //arr[0]和arr[arr.length-1-0]交换
                        //arr[1]和arr[arr.length-1-1]交换
                        //arr[2]和arr[arr.lentth-1-2]
                        //...
            
                        int temp = arr[i];
                        arr[i] = arr[arr.length-1-i];
                        arr[arr.length-1-i] = temp;
                    }
                }

    数组的操作4查表法

    * A:案例演示
        * 数组查表法(根据键盘录入索引,查找对应星期)
        
                public static char getWeek(int week) {
                    char[] arr = {' ','一','二','三','四','五','六','日'};        //定义了一张星期表
                    return arr[week];                                            //通过索引获取表中的元素
                }

    数组的操作5基本查找

    * A:案例演示
        * 数组元素查找(查找指定元素第一次在数组中出现的索引)
        
                public static int getIndex(int[] arr,int value) {
                    for (int i = 0;i < arr.length ;i++ ) {                //数组的遍历
                        if (arr[i] == value) {                            //如果数组中的元素与查找的元素匹配
                            return i;
                        }
                    }
                    return -1;
                } 

    二维数组概述和格式1的讲解

    * A:二维数组概述

    * B:二维数组格式1
        * int[][] arr = new int[3][2]; 

    * C:二维数组格式1的解释

    * D:注意事项
        * a:以下格式也可以表示二维数组
            * 1:数据类型 数组名[][] = new 数据类型[m][n];
            * 2:数据类型[] 数组名[] = new 数据类型[m][n];

        * b:注意下面定义的区别
                int x;
                int y;
                int x,y;
                int[ ] x;

                int[ ] y[ ];
                int[ ] x,y[ ];    x是一维数组,y是二维数组

    * E:案例演示
        * 定义二维数组,输出二维数组名称,一维数组名称,一个元素

    二维数组练习1遍历

    * A:案例演示
        * 需求:二维数组遍历

        * 外循环控制的是二维数组的长度,其实就是一维数组的个数。
        * 内循环控制的是一维数组的长度。

                int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};
        
                for (int i = 0;i < arr.length ;i++ ) {            //获取到每个二维数组中的一维数组
                    for (int j = 0;j < arr[i].length ;j++ ) {    //获取每个一维数组中的元素
                        System.out.print(arr[i][j] + " ");
                    }
       
                    System.out.println();
                }

    二维数组练习2求和

    * A:案例演示
            需求:公司年销售额求和
            某公司按照季度和月份统计的数据如下:单位(万元)
            第一季度:22,66,44
            第二季度:77,33,88
            第三季度:25,45,65
            第四季度:11,66,99
            
            int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};

            int sum = 0;                                    //定义变量,记录每次相加的结果
            for (int i = 0;i < arr.length ;i++ ) {            //获取每一个一维数组
                for (int j = 0;j < arr[i].length ;j++ ) {    //获取每一个一维数组中的元素
                    sum = sum + arr[i][j];                    //累加
                }
            }

            System.out.println(sum);

  • 相关阅读:
    POJ 2388
    POJ 2387
    POJ 2389
    POJ 2379
    POJ 2385
    文件及输入输出流模拟ATM机
    文件及输入输出流模拟学生系统
    第六讲 字符串
    第四节课练习
    第四次上课练习
  • 原文地址:https://www.cnblogs.com/zhaochuming/p/12496692.html
Copyright © 2011-2022 走看看