02-数组,方法

数组

  • 引入

    变量定义 : 数据类型 变量名 = new 数据类型();

    Integer zhangsanAge = new Integer();

    数组

  • 数组: 存储相同的数据类型的值的容器

  • 数据格式

    /**
     * Author itcast
     * Date 2021/5/3 9:49
     * Desc TODO
     */
    public class ArrayDemo {
        public static void main(String[] args) {
            //定义数组的格式
            //1. 动态定义数组
            数据类型[] 数组名称 = new 数据类型[长度];  // 推荐使用
            数据类型 数据名称[] = new 数据类型[长度];
            //2. 静态定义数组
            数据类型[] 数组名称 = new 数据类型[]{1,2...};
            数据类型[] 数组名称 = {1,2...};   // 推荐使用
            
            // 数据类型 代表是 当前数组的元素的类型
            // [] 代表是 当前这个类型是数组
            // [长度] 代表是 当前数组的长度(容量的大小)
            // {} 代表是 静态分配的元素集合
        }
    }
    
  • 案例1 - 定义数组

    /**
     * Author itcast
     * Date 2021/5/3 9:55
     *         //1. 动态定义数组
     *         数据类型[] 数组名称 = new 数据类型[长度];  // 推荐使用
     *         数据类型 数据名称[] = new 数据类型[长度];
     *         //2. 静态定义数组
     *         数据类型[] 数组名称 = new 数据类型[]{值1,值2...};
     *         数据类型[] 数组名称 = {值1,值2...};   // 推荐使用
     */
    public class ArrDemo01 {
        public static void main(String[] args) {
            //1.创建int类型的数组, 用来存储3个元素.
            int[] arr = new int[3];
            //2.创建int类型的数组, 存储数据11, 22, 33.
            int[] arr1 = {11,22,33};
            //3.创建boolean类型的数组,用来存储3个元素 false,false,false
            boolean[] bs = new boolean[3];
        }
    }
    
  • 数组的特点

    1. 数组的存储是顺序的,获取数据的下标(索引),默认索引位置是 0

    2. 数组类型默认值

      int 类型默认值是 0

      String 类型默认值是 null

      boolean 类型默认值是 false

      double 类型默认值是 0.0d

  • 数组的基本用法

    1. 如何获取数组的值 格式: 数组名称[索引]

      如果数组名是 arr 获取第12个位置的数据 arr[11]

    2. 如何对数组的进行赋值 数组名称[索引]=值

      int[] arr = new int[3]; // 0,0,0

      第二个值赋值为15

      arr[1]=15;

    3. 如何获取数组的长度呢 数组名称.length

      int[] arr = new int[3]; // 0,0,0

      arr.length // 3

  • 案例1 - 基础需求

    /**
     * Author itcast
     * Date 2021/5/3 10:08
     * 数据类型[] 数组名称= new 数据类型[长度];
     * 数据类型[] 数组名称 = {值1,值2...};
     */
    public class ArrayDemo03 {
        public static void main(String[] args) {
            //1.定义一个长度为5的int类型的数组.
            int[] arr1= new int[5];
            //2.打印数组中的第3个元素.
            System.out.println(arr1[2]);
            //3.设置数组中的第一个元素值为11.
            arr1[0]=11;
            //4.获取数组中的第一个元素值, 并将其赋值给变量a, 然后打印.
            int a = arr1[0];
            //5.打印数组的长度.
            System.out.println(arr1.length);
        }
    }
    
  • 内存划分图

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iZ3rx3Bs-1669232742912)(F:/BigData/java/java笔记/assets/image-20210503105930618.png)]

  • 案例2 - 两个数组的操作案例

    /**
     * Author itcast
     * Date 2021/5/3 14:43
     * Desc TODO
     */
    public class ArrayDemo05 {
        public static void main(String[] args) {
            //1.定义一个长度为3的int类型的数组.
            int[] arr = new int[3];
            //2.修改数组中的第一个元素为: 11
            arr[0]=11;
            //3.打印数组中的第一, 第二个元素.
            System.out.println(arr[0]);
            System.out.println(arr[1]);
            //4.打印数组对象.
            System.out.println(arr);
            //5.定义一个int类型的数组, 存储元素1, 2.
            int[] arr1 = {1,2};
            //6.修改数组的第二个元素值为: 22.
            arr1[1]=22;
            //7.打印数组的第二个元素.
            System.out.println(arr1[1]);
            //8.打印arr1数组对象.
            System.out.println(arr1);
            int sum = sum(1, 2);
            System.out.println(sum);
        }
        public static int sum(int a,int b){
            return a+b;
        }
    }
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NS0gaUSN-1669232742913)(F:/BigData/java/java笔记/assets/image-20210503150707373.png)]

  • 案例3 - 第二个数组指向第一个数组首地址,修改数组的内容

    public class ArrayDemo06 {
        public static void main(String[] args) {
            //1.定义一个int类型的数组, 存储元素11, 22, 33.
            int[] arr1 = {11, 22, 33};
            //2.打印数组对象.
            System.out.println(arr1);
            //3.打印数组中的各个元素值.
            //Arrays.asList(arr1).stream().forEach(t->System.out::println);
            for (int i = 0; i < arr1.length; i++) {
                int i1 = arr1[i];
                System.out.println(i1);
            }
            //4.定义第二个数组, 把第一个数组的地址值赋值给第二个数组.
            int[] arr2 = arr1;
            //5.通过第二个数组, 修改第二个元素值为200.
            arr2[1] = 200;
            //6.打印数组对象.
            System.out.println(arr2);
            //7.打印数组中的各个元素值.
            for (int i = 0; i < arr2.length; i++) {
                int i1 = arr2[i];
                System.out.println(i1);
            }
        }
    }
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UDg9QRep-1669232742913)(F:/BigData/java/java笔记/assets/image-20210503151654404.png)]

数组使用中常见的两个小问题

  • 数组索引越界异常(ArrayIndexOutOfBoundsException)

    当前获取的数组的索引不在数组的长度范围之内

    /**
     * Author itcast
     * Date 2021/5/3 11:09
     * Desc TODO
     */
    public class ArrayExceptDemo {
        public static void main(String[] args) {
            //1.定义int类型的数组, 存储元素11, 22.
            int[] arr = {11, 22};
            //2.打印数组中的第2个元素.
            System.out.println(arr[1]);
            //3.尝试打印数组中的第3个元素.
            System.out.println(arr[2]);
        }
    }
    
  • 空指针异常(NullPointerException)

    当前数组并没有赋值,开辟堆的存储空间,调用数组的值,报空指针异常

    /**
     * Author itcast
     * Date 2021/5/3 11:11
     * Desc TODO
     */
    public class ArrayExceptDemo02 {
        public static void main(String[] args) {
            //1.定义int类型的数组, 存储元素11, 22.
            int[] arr = {11, 22};
            //2.将null(空常量)赋值给数组.
            arr = null;
            //3.尝试打印数组的第一个元素.
            System.out.println(arr[0]);
        }
    }
    

数组的常见操作

  • 遍历数组
  • 获取数组中最大/最小值
  • 翻转数组
  • 对数组排序
  • 填充数组的内容
  • 将数组转换成其他的类型,比如List,字符串等

遍历数组

  • 定义int类型的数组arr, 存储元素11, 22, 33, 44, 55.

    通过for循环, 遍历数组.

    public class ArrayDemo07 {
        public static void main(String[] args) {
            //1.定义int类型的数组arr, 存储元素11, 22, 33, 44, 55.
            int[] arr = {11, 22, 33, 44, 55};
            //2.通过for循环, 遍历数组.
            //2.1 增强 for 循环  //快捷键: foreach || iter || fori
            for (int i : arr) {
                System.out.println(i);
            }
            //2.2 使用 for 固定大小遍历 //快捷键 itar
            for (int i = 0; i < arr.length; i++) {
                int i1 = arr[i];
                System.out.println(i1);
            }
        }
    }
    
  • 已知各位美女的颜值如下图, 请求出下图中, 颜值最高的数字, 并打印到控制台上.

    /**
     * Author itcast
     * Date 2021/5/3 15:29
     * Desc TODO
     */
    public class ArrayDemo08 {
        public static void main(String[] args) {
            //求出当前颜值最高的数字
            int[] arr = {5, 15, 2000, 10000, 100, 4000};
            //设置变量用于接收当前最大值的变量
            int tmp = arr[0];
            //遍历数组,比较最大值
            /*for (int i = 0; i < arr.length; i++) {
                int i1 = arr[i];
                if (i1 > tmp) {
                    tmp = i1;
                }
            }*/
            //先排序,取第一个或者最后一个
            //冒泡排序,快速排序,堆排序,归并排序
            Arrays.sort(arr);
            for (int i : arr) {
                System.out.println(i);
            }
            System.out.println("当前颜值最高的值: " + arr[arr.length - 1]);
        }
    }
    
    • 通过将每个值都和数组中的第一个值进行比较,最大的放到第一个位置 (大堆排序)
    • 先排序,取第一个或者最后一个
  • 案例3 - 翻转数组元素

    /**
     * Author itcast
     * Date 2021/5/3 16:13
     *  11, 33, 22, 55, 44.
     */
    public class ArrayDemo09 {
        public static void main(String[] args) {
            //1.定义int类型的数组, 存储数据: 11, 33, 22, 55, 44.
            int[] arr = {11, 33, 22, 55, 44, 66};
            //2.反转数组, 并打印反转后的结果.
            for (int i = 0; i <= (arr.length - 1)/2; i++) {
                int temp = 0;
                temp = arr[i];
                arr[i] = arr[arr.length-1-i];
                arr[arr.length-1-i] = temp;
            }
            //2.1 将 i -> length - 1 - i
            //2.2 交换了 length - 1 / 2
            for (int i : arr) {
                System.out.println(i);
            }
        }
    }
    
  • 对数组排序

    Arrays.sort(arr);
    
  • 填充数组的内容

    Arrays.fill(arr,2,3,200);
            for (int i = 0; i < arr.length; i++) {
                int i1 = arr[i];
                System.out.println(i1);
            }
    
  • 将数组转换成其他的类型,比如List,字符串等

    # 转换成 字符串 
        Arrays.toString(arr);
    # 转换成 列表
        Arrays.asList(arr);
    

方法

概述

方法值的就是把一些具有独立功能的代码块整合成一个整体,使其成为一个具有特殊功能的代码集。
把Scanner,if,for,输出语句,数组 -> 求数组元素最大值。
  • 格式
修饰符 返回值的数据类型 方法名(数据类型 形参1, 数据类型 形参2) {
        //具体的业务代码,  就是以前你写的: 变量, 常量, if, for, switch, 输出语句, 运算符...
        return 具体的返回值;
}
  • 格式解释:

    • **修饰符:**固定格式, 目前先写 public static
      **返回值的数据类型:**表示方法执行完毕后, 需要返回一个什么类型的结果, 如果方法无任何返回值, 则返回值的数据类型要写成: void
      **方法名:**遵循 小驼峰 命名法, 最好做到 见名知意.
      **参数列表:**表示调用方法的时候, 需要给方法传入什么类型的值, 例如: int a, int b
      **具体的业务代码:**就是以前你写的: 变量, 常量, if, for, switch, 输出语句, 运算符…
      **return 具体的返回值:**就是方法执行结束后, 返回的 具体的 结果.
  • 注意事项:

1. 方法与方法之间是平级关系, 不能嵌套定义.
2. 方法只有被调用才会执行.
3. 方法在调用之前, 必须先定义, 这个动作称为: 定义方法.
4. 定义方法的时候, 写到参数列表中的内容叫: 形式参数(简称: 形参), 形容调用方法,需要传入什么类型的值.
5. 调用方法的时候, 传入的值叫: 实际参数(简称: 实参), 即: 实际参与运算的数据.
6. 方法的功能越单一越好.
7. 方法如果没有具体的返回值, 则返回值的数据类型必须写成 void

使用方法的核心6步:

定义方法时的三个明确:
1. 明确方法名, 做到见名知意.
2. 明确参数列表, 即: 调用方法, 需要传入什么类型的值.
3. 明确返回值的数据类型, 即: 方法执行结束后, 返回一个具体的什么类型的结果.
调用方法的三个步骤:
1. 写 方法名();
2. 传参, 方法要什么类型的参数, 我们就传入什么类型的值.
3. 接收返回值. 方法返回什么类型的结果, 我们就用对应类型的变量来接收.

案例:

public class Demo01 {
    public static void main(String[] args) {
        //调用方法
        int sum = getSum(10, 20);   //实参
        System.out.println(sum);
        return;     //return的主职: 就是用来结束方法的.
    }

    //定义方法
    public static int getSum(int a, int b) {    //形参
        int sum = a + b;
        return sum; //return的兼职: 可以返回方法的执行结果(如果有), 在哪里调用, 就返回到哪里.
    }
}

无参无返回值

public class Demo02 {
    public static void main(String[] args) {
        printHello();
    }
    public static void printHello(){
        System.out.println("hello world");
    }
}

有参无返回值

 //案例: 演示有参无返回值的方法.
/*
    方法的定义格式:
        修饰符 返回值的数据类型 方法名(数据类型 参数名1, 数据类型 参数名2...) {
            方法体;        //就是以前我们一直写的 逻辑代码
            return 具体的返回值;
        }
    示例:
        public static void main(String[] args) {
        }
    注意事项:
        1. 方法与方法之间是平级关系, 不能嵌套定义.
        2. 方法的功能越单一越好.
        3. 方法只有被调用才会执行.
        4. 定义方法的时候写在参数列表中的参数叫: 形参.
           调用方法的时候传入的具体值, 叫: 实参.
 */
public class MethodDemo02 {
    public static void main(String[] args) {
        //1.定义方法isEvenNumber(), 该方法接收一个int类型的整数num.
        //2.判断num是奇数还是偶数, 并打印结果.
        /*
            调用方法的三个步骤:
                1. 写方法名. 用谁就写谁, 注意大小写, 不要写错了.
                2. 传参, 方法要什么, 我们就给什么.
                3. 接收返回值, 即: 方法给什么, 我们就用什么类型的变量来接收.
         */
        isEvenNumber(13);
    }

    //1.定义方法isEvenNumber(), 该方法接收一个int类型的整数num.,    方法与方法之间是平级关系, 不能嵌套定义.
    /*
        分析: 定义方法的三个明确
            1. 明确方法名.
            2. 明确参数列表.
            3. 明确返回值的数据类型.
     */
    public static void isEvenNumber(int num) {      //参数列表, 形容调用方法的时候需要传入什么类型的数据.
        //即: 判断传过来的num是奇数还是偶数, 并将结果打印到控制台上.
        if (num % 2 == 0)
            System.out.println(num + " 是偶数");
        else
            System.out.println(num + " 是奇数");
    }
}

无参有返回值

  • 案例1:
//案例: 演示无参有返回值的方法, 案例一: 求和.
public class MethodDemo03 {
    public static void main(String[] args) {
        //3.在main方法中调用getSum()方法, 并打印结果.
        /*
            调用方法的3个步骤:
                1. 写方法名. 用谁就写谁, 注意大小写, 不要写错了.
                2. 传参, 方法要什么, 我们就给什么.
                3. 接收返回值, 即: 方法给什么, 我们就用什么类型的变量来接收.
         */

        //调用方法的方式1: 直接调用, 无意义, 一般不用.
        //getSum();

        //调用方法的方式2: 输出调用, 比较简单, 一般上课都用这种.
        //System.out.println(getSum());;               //getSum()  -> 30

        //调用方法的方式3:  赋值调用.
        int sum = getSum();
        //打印求和结果
        System.out.println(sum);
    }

    //1.定义方法getSum(), 该方法内部有两个int类型的整数.
    /*
        定义方法的三个明确:
            1. 明确方法名.                           getSum()
            2. 明确参数列表.                         空
            3. 明确返回值的数据类型.                 int
     */
    public static int getSum() {
        //1.1 该方法内部有两个int类型的整数.
        int a = 10;
        int b = 20;

        //2.获取上述两个整数的和, 并返回.
        //分解版
        /*//1.2 求和
        int sum = a + b;
        //1.3 返回结果.
        return sum;*/

        //合并版.
        return a + b;
    }
}

  • 案例2:
package com.itheima.demo03_method;

//案例: 演示无参有返回值的方法, 案例二: 判断奇偶数.
public class MethodDemo04 {
    public static void main(String[] args) {
        //3.在main方法中调用isEvenNumber()方法, 并打印结果.
        //调用方式1: 直接调用, 了解.
        //isEvenNumber();

        //调用方式2: 输出调用, 课堂用.
        //System.out.println(isEvenNumber());;

        //调用方式3: 赋值调用, 实际开发用.
        boolean flag = isEvenNumber();
        System.out.println(flag);
    }


    //1.定义方法isEvenNumber(), 该方法内部有一个整数num.
    /*
          定义方法的三个明确:
            1. 明确方法名.                           isEvenNumber()
            2. 明确参数列表.                         空
            3. 明确返回值的数据类型.                 boolean
     */
    public static boolean isEvenNumber() {
        //1. 该方法内部有一个整数num.
        int num = 26;
        //2.判断num是奇数还是偶数, 并返回结果.
        if (num % 2 == 0)
            return true;            //true: 偶数,   false: 奇数
        else
            return false;
    }
}

有参有返回值

  • 求和案例
package com.itheima.demo03_method;

//案例: 演示有参有返回值的方法, 求和案例.
/*
    方法的完整的定义格式:
        public static 返回值的数据类型 方法名(数据类型 参数名1, 数据类型 参数名2) {
            方法体;
            return 具体的返回值;
        }
 */
public class MethodDemo05 {
    public static void main(String[] args) {
        System.out.println("start");
        //3.在main方法中调用getSum()方法, 并打印结果.
        /*
            调用方法的三个步骤:
                1. 写方法名. 用谁就写谁, 注意大小写, 不要写错了.
                2. 传参, 方法要什么, 我们就给什么.
                3. 接收返回值, 即: 方法给什么, 我们就用什么类型的变量来接收.
         */
        int sum = getSum(10, 21);
        System.out.println("sum: " + sum);
        System.out.println("end");
    }

    //1.定义方法getSum(), 接收两个int类型的整数.
    /*
         定义方法的三个明确:
            1. 明确方法名.                           getSum()
            2. 明确参数列表.                         int a, int b         形式参数
            3. 明确返回值的数据类型.                 int
     */
    public static int getSum(int a, int b) {        //int a = 10, int b = 21
        //2.获取上述两个整数的和, 并返回.
        /*int sum = a + b;
        return sum;*/
        return a + b;
    }
}

  • 判断奇偶数案例
package com.itheima.demo03_method;

//案例: 演示有参有返回值的案例, 判断奇偶数.
public class MethodDemo06 {
    public static void main(String[] args) {
        //3.在main方法中调用isEvenNumber()方法, 并打印结果.
        /*
            调用方法的三个步骤:
                1. 写方法名. 用谁就写谁, 注意大小写, 不要写错了.
                2. 传参, 方法要什么, 我们就给什么.
                3. 接收返回值, 即: 方法给什么, 我们就用什么类型的变量来接收.
         */
        boolean flag = isEvenNumber(22);
        System.out.println(flag);

    }//main方法的大括号


    //1.定义方法isEvenNumber(), 该方法接收一个int类型的整数num.
     /*
         定义方法的三个明确:
            1. 明确方法名.                           isEvenNumber()
            2. 明确参数列表.                         int num            形式参数
            3. 明确返回值的数据类型.                 boolean
     */
    public static boolean isEvenNumber(int num) {
        //2.判断num是奇数还是偶数, 并返回结果.
        //分解版
        //boolean flag = num % 2 == 0 ? true : false;
        /*boolean flag = num % 2 == 0;
        return flag;*/

        //合并版
        return num % 2 == 0;
    }


}//类的大括号

  • 求最大值
package com.itheima.demo03_method;

//案例: 演示有参有返回值的方法, 求最大值.

public class MethodDemo07 {
    public static void main(String[] args) {
        //3.在main方法中调用getMax()方法, 获取最大值并打印.
        int max = getMax(11, 22);
        System.out.println("最大值是: " + max);
        //return;       如果方法没有明确的返回值, 则return可以省略, 对结果没有影响.
    }

    //1.定义方法getMax(), 该方法接收两个整数.
    //参数列表: int a, int b,    返回值类型: int
    public static int getMax(int a, int b) {
        //2.通过该方法, 获取两个整数的最大值, 并返回.
        return a > b ? a : b;
    }
}

关于方法的思考题:
1.方法与方法之间可以嵌套定义吗?
不可以, 因为方法与方法之间是平级关系, 不能嵌套定义.

2.方法没有具体的返回值时, 返回值的数据类型可以不写吗?
不可以, 如果方法没有明确的返回值, 则返回值的数据类型必须写成: void

3.方法体中的`return关键字可以省略吗?
看需求,
如果方法没有明确的返回值,return可以省略, 对结果没有影响.
如果方法有明确的返回值,return不能省略.

小细节:
					  主职                  兼职
//return的主要作用是用来 结束方法的, 捎带着可以 返回值.

方法重载

  • 方法重载概述
1. 同一个类中出现,
2. 方法名相同,
3. 但是参数列表不同的    //参数列表不同分为两种情况: 1. 参数个数不同. 2. 对应的数据类型不同.
4. 两个或者以上的方法时, 称为方法重载.也叫: Overload.
5. 方法重载和方法的返回值的数据类型无关.
    
作用(目的):
    方法重载就是用来解决: 功能相似, 但是方法名不能重名的问题的.
  • 应用场景:
实际开发中, 我们发现某些方法的功能是类似的, 每个方法都单独设置一个名字是非常麻烦的, 也不方便记忆.
针对于这种情况,我们可以采用 方法重载来解决, 只要保证: 方法名相同, 参数列表不同即可.
这样当我们调用该方法时, 会根据传入的参数, 来调用对应的方法.
  • 案例:演示方法重载入门, 不使用方法重载版本
package com.itheima.demo05_overload;


//案例: 演示方法重载入门,   不使用方法重载版本, 了解即可.
public class MethodDemo01 {
    public static void main(String[] args) {
        System.out.println(compareInt(10, 20));
    }

    //1.定义方法compare(), 用来比较两个整型数据是否相等.
    //2.要求兼容所有的整数类型, 即(byte, short, int, long)

    //1.1 定义方法, 用来比较两个byte数据是否相等.
    public static boolean compareByte(byte b1, byte b2) {
        return b1 == b2;
    }

    public static boolean compareByteAndInt(byte b1, int b2) {
        return b1 == b2;
    }

    //1.2 定义方法, 用来比较两个short数据是否相等.
    public static boolean compareShort(short s1, short s2) {
        return s1 == s2;
    }
    //1.3 定义方法, 用来比较两个int数据是否相等.
    public static boolean compareInt(int s1, int s2) {
        return s1 == s2;
    }
    //1.4 定义方法, 用来比较两个long数据是否相等.
    public static boolean compareLong(long s1, long s2) {
        return s1 == s2;
    }
}

  • 案例: 演示方法重载入门, 使用方法重载版本
package com.itheima.demo05_overload;

//案例: 演示方法重载入门, 使用方法重载版本
/*
    方法重载概述:
        1. 同一个类中出现,
        2. 方法名相同,
        3. 但是参数列表不同的            //参数列表不同分为两种情况: 1. 参数个数不同. 2. 对应的数据类型不同.
        4. 两个或者以上的方法时, 称为方法重载.
        5. 方法重载和方法的返回值的数据类型无关.

    应用场景:
        实际开发中, 我们发现某些方法的功能是类似的, 每个方法都单独设置一个名字是非常麻烦的, 也不方便记忆.
        针对于这种情况,我们可以采用 方法重载来解决, 只要保证: 方法名相同, 参数列表不同即可.
        这样当我们调用该方法时, 会根据传入的参数, 来调用对应的方法.
 */
public class MethodDemo02 {
    public static void main(String[] args) {
        byte b1 = 10;
        byte b2 = 20;
        System.out.println(compare(b1, b2));

    }

    //1.定义方法compare(), 用来比较两个整型数据是否相等.
    //2.要求兼容所有的整数类型, 即(byte, short, int, long)

    //1.1 定义方法, 用来比较两个byte数据是否相等.
    public static boolean compare(byte b1, byte b2) {
        System.out.println("byte");
        return b1 == b2;
    }
    //1.2 定义方法, 用来比较两个short数据是否相等.
    public static boolean compare(short s1, short s2) {
        System.out.println("short");
        return s1 == s2;
    }
    //1.3 定义方法, 用来比较两个int数据是否相等.
    public static boolean compare(int s1, int s2) {
        System.out.println("int");
        return s1 == s2;
    }
    //1.4 定义方法, 用来比较两个long数据是否相等.
    public static boolean compare(long s1, long s2) {
        System.out.println("long");
        return s1 == s2;
    }


    //方法重载的思考题
    public static void open(){}
    public static void open(int a){}
    public static void open(double a,int b){}
    //public static void open(int a,double b){}   //冲突1
    public void open(int i,double d){}			//冲突1


    static void open(int a,int b){}			//冲突2
    //public static void open(int i,int j){}	//冲突2

    public static void OPEN(){}
}

方法的参数传递

形参是基本类型:
  • 基本类型作为参数时, 形参的改变对实参没有任何影响
package com.itheima.demo05_overload;

//演示: 方法的参数传递问题之:  形参是基本类型.
//记忆: 基本类型作为参数时, 形参的改变对实参没有任何影响.
public class MethodDemo03 {
    public static void main(String[] args) {
        int number = 100;
        System.out.println("调用change方法前:" + number);        //100
        change(number);	 //实参.
        System.out.println("调用change方法后:" + number);        //100
    }

    public static void change(int number) {	//形参.           //number = 100;
        number = 200;
    }
}

形参是引用类型
  • 引用类型作为参数时, 形参的改变直接影响实参
  • (String类型除外, String类型当做形参使用时, 用法和基本类型一致, 后续API部分详解)
package com.itheima.demo05_overload;

//演示: 方法的参数传递问题之:  形参是引用类型.
//记忆: 引用类型作为参数时, 形参的改变直接影响实参(String类型除外, String类型当做形参使用时, 用法和基本类型一致, 后续API部分详解)
public class MethodDemo04 {
    public static void main(String[] args) {
        int[] arr = {10, 20, 30};       //0x001
        System.out.println("调用change方法前:" + arr[1]);        //20
        change(arr);
        System.out.println("调用change方法后:" + arr[1]);        //200
    }

    public static void change(int[] arr) {  //0x001,  10, 20, 30
        arr[1] = 200;            //10, 200, 30
    }
}

  • 打印数组
package com.itheima.demo05_overload;

//案例: 打印数组, (伪)标准版.
public class MethodDemo05 {
    public static void main(String[] args) {
        //调用方法.
        int[] arr = {11, 22, 33, 44, 55};
        //printArray(arr);
        printArray2(arr);
        //System.out.println("我在哪? ");
    }

    //1.定义方法printArray(), 该方法用来打印数组.
    //2.打印格式为: [11, 22, 33, 44, 55]
   public static void printArray(int[] arr) {
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            //arr[i]: 就是数组中的每一个元素, 例如: 11, 22, 33, 44, 55

            //判断当前是否是数组的最后一个元素, 如果是, 就拼接: ]  + 换行
            if (i == arr.length - 1) {
                System.out.println(arr[i] + "]");
            } else {
                //说明不是最后一个元素, 拼接:  ,
                System.out.print(arr[i] + ", ");
            }
        }
    }



    public static void printArray2(int[] arr) {
        System.out.print("[");
        for (int i = 0; i < arr.length; i++)
            //arr[i]: 就是数组中的每一个元素, 例如: 11, 22, 33, 44, 55
            //判断当前是否是数组的最后一个元素, 如果是, 就拼接: ]  + 换行
            System.out.print(arr[i] + (i == arr.length - 1 ? "]\r\n" : ", "));
    }
}

Debug断点调试

  • 名词解释:Bug
    • 指的是项目中出现的所有非正常的情况(软件,硬件都包含),统称为:Bug
  • 概述:
    • 可以帮助我们对程序进行调错,也可以帮助我们快速梳理项目的业务模板。
package com.itheima.demo06_debug;

//案例: 演示Debug断点调试
/*
    步骤:
        1. 加断点, 哪里不会点哪里.
        2. 运行加了断点的程序, 注意: 不要选择run, 要选择debug(就是小蜘蛛)
        3. 开始调试后, 看哪里呢?
            Debugger:   看代码执行到哪里了.
            Console:    控制台, 就是查看程序运行结果的.
            Variable:   就是查看 变量的变化过程的.
        4. 如何进行下一步?
            F7: 逐过程调试
            F8: 逐行调试
            F9: 逐断点调试
        5. 如何删除断点?
            方式1: 一个一个删除.
            方式2: 批量删除.      //选择breakpoints(双红点), 移除断点即可.
 */
public class Dem14 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int sum = getSum(a,b);
        System.out.println(sum);
    }

    public static int getSum(int a, int b) {
        int sum = a + b;
        return sum;
    }
}
        System.out.print(arr[i] + (i == arr.length - 1 ? "]\r\n" : ", "));
}

}


### Debug断点调试

* 名词解释:Bug
  * 指的是项目中出现的所有非正常的情况(软件,硬件都包含),统称为:Bug
* 概述:
  * 可以帮助我们对程序进行调错,也可以帮助我们快速梳理项目的业务模板。

~~~java
package com.itheima.demo06_debug;

//案例: 演示Debug断点调试
/*
    步骤:
        1. 加断点, 哪里不会点哪里.
        2. 运行加了断点的程序, 注意: 不要选择run, 要选择debug(就是小蜘蛛)
        3. 开始调试后, 看哪里呢?
            Debugger:   看代码执行到哪里了.
            Console:    控制台, 就是查看程序运行结果的.
            Variable:   就是查看 变量的变化过程的.
        4. 如何进行下一步?
            F7: 逐过程调试
            F8: 逐行调试
            F9: 逐断点调试
        5. 如何删除断点?
            方式1: 一个一个删除.
            方式2: 批量删除.      //选择breakpoints(双红点), 移除断点即可.
 */
public class Dem14 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int sum = getSum(a,b);
        System.out.println(sum);
    }

    public static int getSum(int a, int b) {
        int sum = a + b;
        return sum;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值