2020-04-26

数组操作

1.数组地址转移问题【难点】


public static void main(String [] args) {

int[] arr1 = new int[10];

int[] arr2 = new int[10];

arr1[0] = 10;

arr2[0] = 20;

System.out.println("arr1[0]:" + arr1[0]);

System.out.println("arr2[0]:" + arr2[0]);

arr1[5] = 50;

arr2 = arr1;

arr1[0] = 30;

arr2[0] = 100;

System.out.println("arr1[0]:" + arr1[0]);

System.out.println("arr2[0]:" + arr2[0]);

System.out.println("arr2[5]:" + arr2[5]);

问题总结:

1.

    int[] arr1 = new int[20];

    int[] arr2 = new int[10];

    arr1 = arr2;

    arr1[15] ???;错误的

    arr1和arr2执行的空间为同一个数组空间

2.

    int[] arr1 = new int[10];

    int[] arr2 = new int[10];

    arr1[0] = 10;

    arr2[0] = 20;

    arr2[5] = 100;

    arr1[0] = arr2[0];

赋值操作完成的是对于元素直接内容的转换,不涉及数组地址转移

2.数组作为方法的参数

public static void main(String[] args) {

}

/*

(String[] args)

        String[] args就是给数组作为方法参数格式,这里main方法需要的参数是一个String类型的数组

格式:

        public static返回值类型方法名(数据类型[] 数组参数名)

数组是可以作为方法的返回值

数组作为参数分析过程

a.在一个int类型数组中,存储的内容是1 ~ 10

        int[] arr = {10, 8, 35, 67, 31, 25, 11, 30,28, 99};

        使用代码找出,元素== 30所在下标位置

方法声明:

        public static int indexOf(int[] arr, int find)

方法实现和文档注释

/**

*在指定数组arr中,查询指定元素find所在的下标位置,找到返回值大于等于0,没有找到

*返回-1

*

* @param arr 查询数据的源数据数组,int类型数组

* @param find指定在数组中查询的数据,也是对应int类型

* @return找到指定元素,返回值大于等于0,否则返回-1

*/

       public static int indexOf(int[] arr,intfind) {

        //

        假设查询的数据不存在

        int index = -1;

        //遍历整个数组

        for (int i = 0; i < arr.length; i++) {

        //发现数组中下标为i的元素和find一致,找到内容,保存下标

                if (find == arr[i]) {

                index = i;

                //终止循环

                break;

               }

            }

            //返回index中保存的数据

            returnindex;

        }

方法验证和传参方式

class Demo {

    public static void main(String[] args) {

        int[] array = {10,8,35,67,31,25,11,30,28,99};

        int find = 13;

        //调用的方法需要数组作为方法的参数,

        //这里传入【数组名】

        int index = indexOf (array,find);

        if (index >= 0) {

            System.out.println("index : " + index);

        } else {

                System.out.println("Not Found!");

        }

}

/**

*在指定数组arr中,查询指定元素find所在的下标位置,找到返回值大于等于0,没有找到

*返回-1

*

* @param arr 查询数据的源数据数组,int类型数组

* @param find指定在数组中查询的数据,也是对应int类型

* @return找到指定元素,返回值大于等于0,否则返回-1

*/

    public static int indexOf(int[] arr, int find){

        //假设查询的数据不存在

        int index = -1;

        //遍历整个数组

        for (int i = 0; i < arr.length; i++) {

            //发现数组中下标为i的元素和find一致,找到内容,保存下标

            if (find ==arr[i]) {

                index = i;

                //终止循环

                break;

            }

        }

        //返回index中保存的数据

        return index;

    }

}

方法运行内存图


总结

1. 数组作为方法参数的固定格式

        (数据类型[] 数组参数名)

2.数组作为方法的实际参数的固定格式

        (数组名)

3.数组名作为方法的参数,实际传递的是数组空间首地址,就是和数组地址转移问题是一致的

4.方法执行需要参数,如果没有给予对应格式的实际参数,直接报错

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容