Java-数组

power by 黑马程序员
数组:数组指的是一种容器,可以用来存储同种数据类型的多个值。

Java-数组_第1张图片

1、数组的定义

Java-数组_第2张图片

2、数组的初始化

就是在内存中,为数组容器开辟空间,并将数据存入容器的过程。

  • 静态初始化

Java-数组_第3张图片

Java-数组_第4张图片

        //需求1:定义数组存储5个学生的年龄
        int[] age = new int[]{11,28,17,37,44};
        int[] age1 = {11,28,17,37,44};

        //需求2:定义数组存储3个学生的姓名
        String[] name = new String[]{"zahnsan","lisi","wangwu"};
        String[] name1 = {"zahnsan","lisi","wangwu"};

        //需求3:定义数组存储4个学生的身高
        double[] height = new double[]{1.75,1.76,1.78,1.96};
        double[] height1 = {1.75,1.76,1.78,1.96};
  • 动态初始化

初始化时只指定数组长度,由系统为数组分配初始值。

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

范例: int[] arr = new int[3];

数组默认初始化值的规律:
       整数类型:默认初始化值 0
       小数类型:默认初始化值 0.0
       字符类型:默认初始化值 '/u0000' 空格
       布尔类型:默认初始化值 false
       引用数据类型:默认初始化值 null
  • 静态初始化和动态初始化的区别

Java-数组_第5张图片

3、数组的地址值

数组的地址值就表示数组在内存中的位置。

[D@5594a1b5
“[”:表示的就是一个数组
“D”:表示当前数组内的元素都是double类型。
“@”:表示一个间隔符号。(固定的格式)
“5594a1b5”:才是数组真正的地址值。(十六进制)
“[D@5594a1b5”:平时习惯性的会把这个整体叫做数组的地址值。

4、数组元素访问

数组名[索引];

Java-数组_第6张图片

索引:也叫做下标、角标。

索引的特点:从0开始,逐个+1增长,连续不间断。

        int[] arr = {1,2,3,4,5};

        //1、获取数组中的第一个元素
        int temp = arr[0];

        //2、把数据存储到数组中
        arr[2] = 6;

        //细节:一旦覆盖之后,原来的数据就不存在了。

5、数组遍历

数组遍历:将数组中所有的内容取出来,取出来之后可以(打印、求和、判断…)。
注意:遍历指的是取出数据的过程,不要局限的理解为,遍历就是打印。

        int[] arr = {1,2,3,4,5};

        //开始条件:0
        //结束条件:数组长度 - 1(最大索引)

        //在Java中,关于数组的一个长度属性:length
        //调用方式:数组名.length

        //扩展:
        //自动快速的生成数组的遍历方式
        //idea提供的:数组名.fori

        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

6、数组常见问题

当访问了数组中不存在的索引,就会引发索引越界异常

        //定义一个数组
        int[] arr = {1,2,3,4,5};

        System.out.println(arr[10]);
        //这个时候会报:ArrayIndexOutOfBoundsException异常
        //原因:访问了不存在的索引
        //避免:要知道索引的范围

7、其他知识点

Random r = new Random()
int number = r.nextInt(100)+1;
//其中 nextInt(100) 是随机生成 0~99 之间(包括0、99)的随机数。
//r.nextInt(100)+1  就是随机生成 1~100之间(包括1、100)的随机数。

8、练习题

        //定义一个数组,存入1~5。要求打乱数组中所有数据的顺序

        //定义一个数组
        int[] arr = {1,2,3,4,5};

        //创建随机对象
        Random r = new Random();

        //遍历数据
        for (int i = 0; i < arr.length; i++) {
            //生成随机索引
            int random = r.nextInt(arr.length);

            //交换数组中的数据
            int temp = arr[random];
            arr[random] = arr[i];
            arr[i] = temp;
        }

        //再次遍历数组
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }

9、数组的内存图

(1)数组内存图

Java-数组_第7张图片

Java-数组_第8张图片

Java-数组_第9张图片

Java-数组_第10张图片

Java-数组_第11张图片

Java-数组_第12张图片

总结:

Java-数组_第13张图片

(2)两个数组指向同一个空间的内存图

Java-数组_第14张图片

Java-数组_第15张图片

总结:

Java-数组_第16张图片

你可能感兴趣的:(java,开发语言,后端)