【javase基础-java数组超详解】

作者简介:大家好,我是大杉。
个人主页:爱编程的大杉
支持我:点赞+关注~不迷路
✔系列专栏:javase基础
(❁´◡`❁)励志格言:面对世界永恒的新奇,我感到我每一刻都是新生。(佩索阿 《守羊人》)

文章目录

  • 一.数组的本质理解
  • 二、数组的两种定义格式
  • 三 、‍☠️数组的动态初始化
    • 1.动态初始化格式
    • 2.动态初始化格式详解
  • 四.数组元素访问
    • 1.什么是索引?
    • 2.访问数据元素的格式
    • 3.示例代码
  • 四.内存分配
    • 1.⛳内存概述
    • 2.⛳java中数组内存分配
    • 3.⛳单个数组内存图
    • 4⛳.多个数组内存图
    • 5.⛳多个数组指向相同内存图
  • 五.数组静态初始化
  • 六.数组操作常见问题
    • 1.索引越界
    • 2.空指针异常
  • 七.数组遍历的方法
    • 1.‍方法一:
    • 2.‍方法二:


一.数组的本质理解

数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。


二、数组的两种定义格式

格式一:数据类型[] 数组名
int [] arr;
double[] arr;
char[] arr;

格式二.数据类型 数组名[]
int arr[];
double arr[];
char arr[];

三 、‍☠️数组的动态初始化

1.动态初始化格式

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

2.动态初始化格式详解

等号左边:
int: 数组的数据类型
[]: 代表这是一个数组
arr: 代表数组的名称
等号右边:
new: 为数组开辟内存空间
int: 数组的数据类型
[]: 代表这是一个数组
5: 代表数组的长度

四.数组元素访问

1.什么是索引?

索引类似于c语言中的数组下标
☀☀每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。
这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。

2.访问数据元素的格式

数组名 [索引];

3.示例代码

public class ArrayDemo {
  public static void main(String[] args) {
    int[] arr = new int[3];
    //输出数组名
    System.out.println(arr); //[I@880ec60
    //输出数组中的元素
    System.out.println(arr[0]);
    System.out.println(arr[1]);
    System.out.println(arr[2]);
    }
  }

四.内存分配

1.⛳内存概述

内存是计算机中的重要原件,临时存储区域,作用是运行程序。
我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的。
必须放进内存中才能运行,运行完毕后会清空内存。

Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

2.⛳java中数组内存分配

在初级阶段,我们只需要理解栈内存,和堆内存,下面会进行详解
【javase基础-java数组超详解】_第1张图片

3.⛳单个数组内存图

【javase基础-java数组超详解】_第2张图片

int [] 开辟一个栈内存,存储定义在方法中的变量arr,其次new 会在创建一个堆内存,存储相应的实体和对象。
【javase基础-java数组超详解】_第3张图片类对对象发出指令后,程序执行进入栈内存中,通过arr的地址指引到达堆内存,再通过数组索引找到对应的对象,执行命令!

4⛳.多个数组内存图

【javase基础-java数组超详解】_第4张图片多个数组内存图,和单个数组执行过程是一样的,都是先到栈内存,在指引到堆内存的相应对象。只不过多执行几次过程

5.⛳多个数组指向相同内存图

【javase基础-java数组超详解】_第5张图片

int [] arr2=arr,就是将arr的地址赋给arr2此时两个数组指向相同的堆内存区域,可以将其理解为一个数组的两种不同表示形态,他们的功能是相同的

五.数组静态初始化

完整版:数据类型 [] 数组名 = new 数据类型[]{元素1,元素2,…};
简化版:数据类型 [] 数组名 = {元素1,元素2,…};

六.数组操作常见问题

1.索引越界

数组引用,超过了她所定义的内存空间,就会出现以下错误提示
解决方案:
将错误的索引修改为正确的索引范围即可!

【javase基础-java数组超详解】_第6张图片

2.空指针异常

public class ArrayDemo {
  public static void main(String[] args) {
    int[] arr = new int[3];
    //把null赋值给数组
    arr = null;
    System.out.println(arr[0]);
    }
 }

arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候会抛出 NullPointerException 空指针异常。在开发中,数组的空指针异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。
解决方案:
给数组一个真正的堆内存空间引用即可

七.数组遍历的方法

1.‍方法一:

利用for循环逐项遍历:

public class ArrayTest01 {
  public static void main(String[] args) {
    //定义数组
    int[] arr = {11, 22, 33, 44, 55};
    //使用通用的遍历格式
    for(int x=0; x<arr.length; x++) {
      System.out.println(arr[x]);
   }
 }
}

2.‍方法二:

利用for-each的形式
【javase基础-java数组超详解】_第7张图片


在这里插入图片描述

你可能感兴趣的:(javase基础,java)