• 方法的重载;数组 (Java Day05)


    一,方法的重载

            概念:在一个类中,拥有多个方法名相同,参数列表不同的方法的现象叫做方法的重载

            特征

    ​            1、在同一个类中

    ​            2、方法名相同

    ​            3、参数列表不同

            参数列表的不同:

    ​            1、参数的个数不同

    ​            2、参数的类型不同【参数的个数相同前提】

    ​            3、参数的顺序不同【参数的个数相同,参数拥有的类型不是同一个类型】

            特点:和方法的返回值类型、方法体、修饰符没有关系

    二,数组

            概述:

    ​           1、他是引用数据类型的一种

    ​           2、数组是用来存储类型一致的多个值的容器(一块连续的空间)

    ​           3、数组一旦创建长度不可变。

    • 数组的初始化【两种初始化方式】

                 初始化方式:

                         1,声明数组:数据类型[ ] 数组名;---------数组名是标识符,需要符合标识符取名的规范与规则。

                         2,分配空间:数组名 = new 数据类型 [数组长度];------new是关键字,含义是创建,开辟。代表在堆内存中开辟一个空间。

                         3,数组赋值:静态赋值和动态赋值

    ​                           静态赋值:创建数组出来的时候把我们想要放的数据放入到数组中

    ​                                          标准格式:数据类型[] 数组名 = new 数据类型[] {值1,值2.....}

    ​                                          简化格式:数据类型[] 数组名 = {值1,值2.....}【常用】

    ​                           动态赋值:创建数组的时候没有把想要的放的值放入到数组中,给定长度值

    ​                                           格式:数据类型[] 数组名 = new 数据类型[数组的长度];

    ​                                           解释:

    ​                                                1. 数据类型:可以是基本数据类型也可以是引用数据类型

    ​                                                2.  []:就是数组的标准符号。

    ​                                                3. new:关键字 在堆空间开辟一块新的空间出来

                        4,数组的使用

                        

                       注意:数组分配空间后,每个元素都有默认值,
                                byte, short, int, long    类型的数组元素的默认值为0
                                float, double          类型的数组元素的默认值为0.0
                                boolean            类型的数组元素的默认值为:false
                                string             类型的数组元素的默认值为:null
                                char            类型的数组元素的默认值为:“u.0000”
                                

    代码示例

    public class Demo02 {
        public static void main(String[] args) {
            //静态初始化
            int[]  arr = new int[] {1,2,3,4,5};//5个长度的数组
            System.out.println(arr);//[I@15db9742
            int[] arr1 = {6,7,8};//3个长度的数组
            System.out.println(arr1);//[I@6d06d69c
            //动态初始化
            String[] arr2 = new String[4];//4个长度大小字符串数组
            System.out.println(arr2);//[Ljava.lang.String;@7852e922
        }
    }

              [I@15db9742:数组的地址【在堆空间中开辟的数组存在的地址值】

              [:  表示是一维数组

              I:表示的是数组存放数据的数据类型

             @:就是一个连接符

             15db9742:哈希值【开辟空间的时候系统给这个空间生成的一个十六进制数】

    • 数组的内存理解

    ​         数组是如何存放数据的?

    ​         把数组内部的空间划分成一个一个的小位置【小空间】,每一个位置存放一个数据,

    ​         数组有多长就会有多少个位置。

    一个数组的内存图:

    ​ 

           ​ 两个数组的内存图:

    ​ 

    ​      

     两个引用指向一个数组的内存图:

    引用:数组变量中存放的是数组的地址值

    ​ 

    • 数组的使用
    • 概述:使用数组的时候操作的是数组的地址值。
    •  使用步骤:

    ​                    1、使用数组变量名【数组的地址值】找到堆空间中对应的数组空间

    ​                    2、通过数组空间的位置的编号来找到对应的位置

    ​                    3、就可以操作该位置的数据

    • 数组空间的位置编号官方起名叫做索引【下标、角标】,是从0开始的。
    • 索引的最大值比数组的长度值小1
    1.  取出数据:格式:数组名[索引值] 比如:arr[3]
    2. 存放数据:格式:数组名称[索引值] = 值; 比如:arr[3] = 5;

      代码示例
    public class Demo03 {
        public static void main(String[] args) {
            String[] arr = {"金莲","百合","蓉蓉","小鹿","冬施"};
            //取值   蓉蓉  索引值  0 1 2 3 4
            System.out.println(arr[2]);//蓉蓉
            //赋值   把冬施这个位置放上蔡徐坤
            System.out.println(arr[4]);//冬施
            arr[4] = "蔡徐坤" ;
            System.out.println(arr[4]);//蔡徐坤
        }
    }

             数组的操作说白了就是使用数组的索引值进行操作。操作的索引值必须要在数组索引范围内;

             操作数组首先要找到对应的数组的地址值,要求数组操作的时候必须要有具体的地址值

    • 数组的异常:

    1. 角标【索引】越界异常:【ArrayIndexOutOfBoundsException】
    2.  原因:操作数组是使用的索引值不在该数组的索引值范围内造成的
    3. 该异常编译不会报错,只有在代码运行的时候才会报错【运行异常】
    4.  空指针异常:【NullPointerException】
    5. 原因:操作的数组变量中存放的是null值,没有具体的地址引用,找不到要操作的数组
    6. 前提:操作地址值为null的数组变量去存取值才会发生
    • 数组遍历

    1. 概述:一次性的从数组中获取多个数据。数组的数据获取通过索引值获取,一个一个的去获取。
    2. 获取多个数据是一个重复动作。使用循环来控制索引值的变化,通过索引值依次获取对应的数据这样的操作叫做遍历。
    3. 遍历的过程中利用索引的最大值比长度值小1 规律作为遍历的条件
    4. 数组的长度获取:数组名称.length;使用for循环进行取值就是数组的遍历

    代码示例:

    public class Demo04 {
        public static void main(String[] args) {
            //创建一个字符串数组
            String[] arr = {"宝宝","乃亮","大朗","羽凡"};
            //循环数组时,循环变量就是数组下标
            for (int i = 0; i < arr.length; i++) {
                //开始取值
                System.out.println(arr[i]);
            }
        }
    }

     练习1

    • 获取一个int类型数组中数据的最大值
    • 分析:求取多个int数据的最大值; 采用打擂台的思想来求取最大值
    1. 从这些数据中随便抽取一个作为第一个擂主
    2. 要让其他的所有元素一次的和擂主打擂
    3. 打输了不管下一个挑战
    4. 打赢了变成新的擂主,同下一个元素继续挑战
    5. 一直到所有的元素挑战完毕,最终的擂主就是最大值

    代码示例

    public class Test01 {
        public static void main(String[] args) {
            int[] arr = {123,34,67,23,234,573,2238};
            //假设一个擂主  arr[0]
            int max = arr[0];
            //进行打擂  获取其他的每一个元素
            //遍历获取每一个元素
            for (int i =  1; i < arr.length; i++) {
                //打擂  arr[i]是挑战者   max 就是擂主
                if (max < arr[i]) {
                    //条件成立擂主失败  换擂主
                    max = arr[i];
                }
            }
            //循环完成之后就是打擂结束了  max里面就是最后的擂主也就最大值
            System.out.println("数组arr中的最大值是:"+max);
        }
    }

    练习2

    • 将数组的元素进行首尾反转
    • 分析:
    • 代码示例:
    public class Demo05 {
        public static void main (String[] args){
             int [] arr = {1,2,3,4,5};
             int [] is = reverse (arr);
             for (int i = 0; i <is.length; i++){
            System.out.println(is[i]);//54321
        }
             System.out.println("==============");
             for (int i = 0; i< arr.length; i++) {
                 System.out.println(arr[i]);//12345
             }
        }
    public static int [] reverse (int[] arr){ //进行反转 拿到首尾的元素 for (int i =0, j = arr.length-1; i <= j; i++, j--){ //尾元素到首元素的位置上 //把首元素先备份一份出去 int temp = arr [i]; arr [i] = arr [j]; arr [j] = temp; } //循环完毕 数组反转完毕 return arr; } }

    练习3

    • 数组元素索引的查找[一旦找到就返回索引后面就不找了]
    • 给定一个数组,找到指定值的索引
    • 思路:使用要查找的值取和数组的元素取对比,相同了找到了,把对应的元素的索引值返回。

     代码示例

    public class Demo03 {
    public static void main(String[] args) {
        int [] arr = {3,4,5,6,7};
        int index = getIndex(arr, 5);
        System.out.println(index);//2,2是5的索引值
        System.out.println(getIndex(arr, 10));//没有这个值返回-1
    }
        public static int getIndex(int[] arr,int num) {
            for(int i =0; i<arr.length; i++) {
                //arr[i]是数组中的数 i数组数对应的索引
                if(num == arr[i]) {
                    return i;
                }
            }
            //循环完毕没有找到对应的数 就没有索引
            return -1;
        }    
    }
  • 相关阅读:
    html meta标签使用总结
    HTTP与HTTPS握手的那些事
    JS windows.open打开窗口并居中
    什么是响应式web设计
    phpstorm2017 激活方法
    php与mysql 绑定变量和预定义处理
    php和mysql数据库防SQL注入的有效解决办法
    如何高效率的写一个不会重复出现的随机数
    php将IP地址转换为真实地址的方法
    PHP程序员要掌握哪些技术
  • 原文地址:https://www.cnblogs.com/nastu/p/12323812.html
Copyright © 2020-2023  润新知