第10节数组二

数组初始化概述

  Java中的数组必须先初始化,然后才能使用

  所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值

数组初始化方式

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

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

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

package itheima;

public class ArrayDemo {
    public static void main(String[] args) {
        //动态初始化
        int[] arr = new int[3];
        /*
        * 左边:
        *     int:说明数组中的元素类型是int类型
        *      []:说明这是一个数组
        *     arr:这是数组的名称
        * 右边:
        *     new:为数组申请内存空间
        *     int:说明数组中的元素类型是int类型
        *      []:说明这是一个数组
        *       3:数组长度,其实就是数组中的元素个数
        * */
    }
}

 

  数组元素访问

  • 数组变量访问方式
  • 格式:数组名
  • 数组内部保存的数据的访问方式
  • 格式:数组名[索引]
  • 索引是数组中数据的编号方式
  • 作用:索引用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名
  • 特征1:索引从0开始
  • 特征2:索引是连续的
  • 特征3:索引逐一增加,每次加1

  索引是什么?  从0开始的这个编号就是索引

  

 

 

package itheima;

public class ArrayDemo {
    public static void main(String[] args) {
        //动态初始化
        int[] arr = new int[3];
        /*
        * 左边:
        *     int:说明数组中的元素类型是int类型
        *      []:说明这是一个数组
        *     arr:这是数组的名称
        * 右边:
        *     new:为数组申请内存空间
        *     int:说明数组中的元素类型是int类型
        *      []:说明这是一个数组
        *       3:数组长度,其实就是数组中的元素个数
        * */

        //输出数组名
        System.out.println(arr);//输出的值为内存地址

        //输出数组元素
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
    }
}

 

内存分配

  Java中的内存分配 :Java程序在运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行

  了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

  数组在初始化时,会为存储空间添加默认值

  • 整数:默认值0
  • 浮点数:默认值0.0
  • 布尔值:默认值false
  • 字符:默认值是空字符
  • 引用数据类型:默认值是null

Java中内存分配

  栈内存:存储局部变量 int[ ] arr

      定义在方法中的变量,例如:arr

      使用完毕,立即消失

  堆内存:存储new出来的内容(实体,对象) new int[3]

      数组在初始化时,会为存储空间添加默认值

        整数:0

        浮点数:0.0

        布尔:false

        字符:空字符

        引用数据类型:null

      每一个new出来的东西都有一个地址值

      使用完毕,会在垃圾回收器空闲时被回收

 

数组内存图(单个数组)

int[] arr=new int[3];
//输出数组名及元素
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
//给数组中的元素赋值
arr[0]=100;
arr[2]=200;
//再次输出数组名和元素
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);

数组内存图(多个数组)

        int[] arr=new int[2];
        int[] arr2=new int[3];
        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr2);
        System.out.println(arr2[0]);
        System.out.println(arr2[2]);

        arr[1]=100;
        arr2[0]=200;
        arr2[2]=100;

        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr2);
        System.out.println(arr2[0]);
        System.out.println(arr2[2]);

数组内存图(多个数组指向相同)

        int[] arr=new int[3];
        arr[0]=100;
        arr[1]=200;
        arr[2]=300;
        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
        //定义第二个数组指向第一个数组
        int[] arr2=arr;
        arr2[0]=111;
        arr2[1]=222;
        arr2[2]=333;
        //输出两个数组的名及元素
        System.out.println(arr);
        System.out.println(arr[0]);
        System.out.println(arr2);
        System.out.println(arr2[0]);

 

posted @ 2021-01-20 20:41  Testtext  阅读(77)  评论(0)    收藏  举报