[JavaSE] 数组

数组的基本用法

什么是数组
数组本质上就是让我们能 “批量” 创建相同类型的变量.
数组的创建

// 动态初始化
数据类型[] 数组名称 = new 数据类型 [长度] { 初始化数据 };
// 静态初始化
数据类型[] 数组名称 = { 初始化数据 }; 

数组的使用
获取数组和访问元素

public class Solution {
    public static void main(String[] args) {
        int[] arr = {1,2,3};
        //获取数组长度
        System.out.println("length = " + arr.length);
        //访问数组元素
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
        arr[2] = 50;
        System.out.println(arr[2]);
    }
}

在这里插入图片描述
使用 [ ] 按下标取数组元素. 需要注意, 下标从 0 开始计数,既可以读取数据也可以修改数据。
下标访问操作不能超出有效范围 [0, length - 1] , 如果超出有效范围, 会出现下标越界异常。
数组的遍历

public class Solution {
    public static void main(String[] args) {
        int[] arr = {9,5,2,7,3,6,8,1};
        for(int i = 0;i < arr.length;i++) {
            System.out.println(arr[i]);
        }
    }
}

使用 for-each 遍历数组

public class Solution {
    public static void main(String[] args) {
        int[] arr = {9,5,2,7,3,6,8,1};
        for(int i : arr) {
            System.out.println(i);
        }
    }
}

数组作为方法的参数

public class Solution {
    public static void main(String[] args) {
        int[] arr = {9,5,2,7,3,6,8,1};
        printArray(arr);
    }
    public static void printArray(int a[]) {
        for(int i : arr) {
            System.out.println(i);
        }
    }
}

int[ ] a 是函数的形参, int[ ] arr 是函数实参.

引用类型

  • 参数传内置类型
public static void main(String[] args) {
    int num = 0;
    func(num);
    System.out.println("num = " + num);
}
public static void func(int x) {
    x = 10;
    System.out.println("x = " + x);
}

在这里插入图片描述
在这里插入图片描述
基本类型数据的参数传递就是传值,对形参的修改是不会影响到实参。

  • 参数传数组类型
public class Solution {
    public static void func(int[] a) {
        a[0] = 10;
        System.out.println("a[0] = " + a[0]);
    }
    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
        func(arr);
        System.out.println("arr[0] = " + arr[0]);
    }
}

在这里插入图片描述
在这里插入图片描述
我们发现:在函数内部修改数组内容, 函数外部也发生改变。
原因是此时数组名 arr 是一个 “引用” . 当传参的时候, 是按照引用传参。
什么是引用:相当于一个低配版指针
创建一个引用只是相当于创建了一个很小的变量, 这个变量保存了一个整数, 这个整数表示内存中的一个地址。

总结: 所谓的 “引用” 本质上只是存了一个地址. Java 将数组设定成引用类型, 这样的话后续进行数组参数传参, 其实只
是将数组的地址传入到函数形参中. 这样可以避免对整个数组的拷贝(数组可能比较长, 那么拷贝开销就会很大).

JVM内存区域划分

在这里插入图片描述

在这里插入图片描述

  • 局部变量和引用保存在栈上, new 出的对象保存在堆上.
  • 堆的空间非常大, 栈的空间比较小.
  • 堆是整个 JVM 共享一个, 而栈每个线程具有一份(一个 Java 程序中可能存在多个栈).
    数组练习
    参见以前一篇博客
    https://blog.csdn.net/weixin_44945537/article/details/100999613?utm_source=app
发布了60 篇原创文章 · 获赞 23 · 访问量 3311

猜你喜欢

转载自blog.csdn.net/weixin_44945537/article/details/104064936
今日推荐