Java_Basic_Day05-数组

1.定义

格式1:

数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];
int[] arr = new int[3];

格式2:

数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};
int[] arr = new int[]{1,2,3,4,5};

格式3:

数据类型[] 数组名 = {元素1,元素2,元素3...};
int[] arr = {1,2,3,4,5};

2.访问

索引访问数组中的元素:
数组名[索引]=数值,为数组中的元素赋值
变量=数组名[索引],获取出数组中的元素
public static void main(String[] args) {
        //索引访问
        int[] arr = {1,3,46,7,8};
        arr[2] = 99;
        int tmp = arr[2];
        System.out.println(tmp);
    }

3.JVM的内存划分


4.数组操作

4.1数组越界异常

public static void main(String[] args) {
   int[] arr = {1,2,3};
   System.out.println(arr[3]);
}

创建数组,赋值3个元素,数组的索引就是0,1,2,没有3索引,因此我们不能访问数组中不存在的索引,程序运行后,将会抛出 ArrayIndexOutOfBoundsException ,开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码;

4.2空指针

public static void main(String[] args) {
   int[] arr = {1,2,3};
   arr = null;
   System.out.println(arr[0]);
}

arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候会抛出NullPointerException 空指针异常;

5.数组遍历

public static void main(String[] args) {
        int[] arr = {1,4,56,23,59,8};
        //遍历数组
        for (int i = 0; i < arr.length; i++){
            System.out.println(arr[i]);
        }
    }

6.数组获取最大值元素

int[] arr = { 5, 15, 2000, 10000, 100, 4000 };
        //保存索引0的元素
        int max = arr[0];
        //遍历数组,取出每个元素
        for (int i = 0;i < arr.length; i++){
            //判断出最大值
            if (arr[i] > max){
                max = arr[i];
            }
        }
        System.out.println("最大值" + max);
    }

7.数组反转

数组中的元素颠倒顺序,例如原始数组为1,2,3,4,5,反转后的数组为5,4,3,2,1

思路:

实现反转,就需要将数组最远端元素位置交换

定义两个变量,保存数组的最小索引和最大索引

两个索引上的元素交换位置

最小索引++,最大索引--,再次交换位置

最小索引超过了最大索引,数组反转操作结束

int[] arr = { 1, 2, 3, 4, 5 };
        /*定义最大和最小索引
        min++,max--
        循环交换元素*/
        for (int min = 0, max = arr.length -1; min <= max; min++, max--){
            int tmp = arr[min];
            arr[min] = arr[max];
            arr[max] = tmp;
        }
        //遍历数组
        for (int i = 0; i < arr.length; i++){
            System.out.print(arr[i]+" ");
        }
    }

8.数组作为方法参数

8.1传递的参数是数组内存的地址


public static void main(String[] args) {
        int[] arr = { 1, 3, 5, 7, 9 };
        //调用,传递数组
        printArray(arr);
    }

    //创建方法,接收数组类型参数
    public static void printArray(int[] arr){
        for (int i = 0; i < arr.length; i++){
            System.out.print(arr[i]+" ");
        }
    }

8.2 数组作为方法返回值

数组作为方法的返回值,返回的是数组的内存地址

public static void main(String[] args) {
        //调用方法,接收数组的返回值
        //接收到的是数组的内存地址
        int[] arr = getArray();
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }

    //定义方法,return arr
    public static int[] getArray(){
        int[] arr = { 1, 3, 5, 7, 9 };
        return arr;

    }

8.3 代码片段

分析下列程序代码,计算输出结果

public static void main(String[] args) {
        int[] arr = {1,3,5};
        System.out.println(arr[0]);//1
        change(arr);
        System.out.println(arr[0]);//200
    }
    public static void change(int[] arr) {
        arr[0] = 200;
    }
public static void main(String[] args) {
        int a = 1;
        int b = 2;
        System.out.println(a);//1
        System.out.println(b);//2
        System.out.println("-------------");
        change(a, b);
        System.out.println(a);//1
        System.out.println(b);//2
    }
    public static void change(int a, int b) {
        a = a + b;
        b = b + a;
    }


猜你喜欢

转载自blog.csdn.net/a1032818891/article/details/80773966