Java基础04:数组、二维数组

系列文章目录

Java基础01:JAVA概述、基础语法
Java基础02:运算符、流程控制语句、Random随机数
Java基础03:IDEA、快捷键
Java基础04:数组、二维数组
Java基础05:方法
Java基础06:Debug、进制
Java基础07:面向对象基础
Java基础08:API、字符串String、StringBuilder
Java基础09:ArrayList集合
Java基础作业



数组介绍

数组(array)是一种容器,用来存储(同种数据类型)的多个值。
理解:容器类型为int,存储double类型,存在问题
理解:容器类型为int,存储byte类型,没有问题
建议:容器的类型,和存储的数据类型保持一致

数组定义格式

在这里插入图片描述

初始化

Java中的数组必须先初始化,然后才能使用
所谓初始化:就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程。
数组元素默认初始化值为0

动态初始化

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

格式:数据类型 [ ] 变量名 = new 数据类型[数组长度];
范例: int [ ] arr = new int[3];

解析含义:
左侧数据类型:也就是数组当中保存的数据,全都是统一的什么类型
左侧的中括号:代表我是一个数组
左侧数组名称:给数组取一个名字
右侧的new:代表创建数组的动作
右侧数据类型:必须和左边的数据类型保持一致
右侧中括号的长度:也就是数组当中,到底可以保存多少个数据,是一个int数字

注意:打印数组变量名,出现的是数组在内存中的地址值。例如:[I@10f87f48

静态初始化

省略格式:(推荐使用)
		数据类型[] 数组名 = {元素值1,元素值2,元素值3,...};
标准格式:
		数据类型[] 数组名 =new 数据类型[] {元素值1,元素值2,元素值3,...};

区别

⚫ 动态初始化:手动指定数组长度,由系统给出默认初始化值。
例:使用数组容器来存储键盘录入的5个整数
int[] arr = {?????};
int[] arr = new int[5];
⚫ 静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度
例:将一班的学生成绩存入数组中 11,22,33
int[] arr = {11, 22, 33};

数组元素

⚫ 数组变量访问方式
⚫ 格式:数组名

⚫ 数组内部保存的数据的访问方式
⚫ 格式:数组名[索引]

⚫ 索引是数组容器中空间的编号,是一个int数字
特征①:索引从0开始
⚫ 特征②:索引是连续的
⚫ 特征③:索引逐一增加,每次加1
在这里插入图片描述

内存分配

JAVA中的内存分配

栈内存:方法被调用的时候都会入栈,局部变量都被保存在栈中
堆内存:new出来的东西都在堆中,堆中的东西都有默认初始化值
⚫ 方法区:字节码文件(.class文件)加载时进入的内存
⚫ 本地方法栈:调用操作系统相关资源
⚫ 寄存器:交给CPU去使用


注意:每new一次,在堆内存中,都是一块新的空间,堆内存中的空间地址不会出现重复的现象

数组的实体保存在堆中
数组名实际保存的是数组实体的地址值

多个数组指向相同

arr2=arr; arr把地址值复制给arr2,arr和arr2指向同一实体。

public class ArrayTest01 {
    public static void main(String[] args) {
        int[] arr=new int[3];//{4,2,3}
        arr[0] = 1;
        arr[1] = 2;
        arr[2] = 3;
        int[] arr2 = arr;
        arr2[0] = 4;
        System.out.println(arr[0]);//4
        System.out.println(arr2[2]);//3

在这里插入图片描述

两个常见问题

在这里插入图片描述

数组遍历

数组长度

⚫ 格式:数组名.length

遍历通用格式

int[] arr = {……};
for(int i=0; i<arr.length; i++) {
	System.out.println(arr[i]); //对arr[i]进行操作
}

数组的反转

public static void main(String[] args) {
        int[] arr={1,2,3,4,5};
        for(int start=0, end=arr.length-1;start<end;start++,end--){
            int temp=arr[start];
            arr[start]=arr[end];
            arr[end]=temp;
        }
        System.out.println(Arrays.toString(arr));
    }

二维数组

二维数组也是一种容器,不同于一维数组,该容器存储的都是一维数组。

定义

⚫ 格式1:数据类型 [ ] [ ] 变量名;
⚫ 范例:int [ ] [ ] arr;

⚫ 格式2:数据类型 变量名[ ] [ ];
⚫ 格式3:数据类型[ ] 变量名[ ];
⚫ 范例:int arr[ ] [ ];
⚫ 范例:int[ ] arr[ ];

初始化

二维数组动态初始化

⚫ 格式:数据类型 [ ] [ ] 变量名 = new 数据类型[ m ] [ n ];
m:行,表示这个二维数组,可以存放多少个一维数组
n:列,表示每一个一维数组,可以存放多少个元素
⚫ 范例:int [ ] [ ] arr = new int [ 2 ][ 3 ];
该数组可以存放2个一维数组,每个一维数组中可以存放3int类型元素

在这里插入图片描述
在这里插入图片描述

二维数组存取的是一维数组,数组都是引用数据类型,默认值都是Null。
创建三个一维数组后,再把一维数组的内存地址存到二维数组中。
在这里插入图片描述
arr[0][3]=11;数组越界异常
在这里插入图片描述
更改二维数组中存取的一维数组的指向的地址。

二维数组静态初始化

⚫ 格式:数据类型 [ ] [ ] 变量名 = new 数据类型[ ] [ ] { {元素1,元素2}, {元素1, 元素2} };
⚫ 范例:int [ ] [ ] arr = new int [ ][ ] { {11,22} , {33,44} };

二维数组的访问

获取二维数组中的一维数组 : 数组名[索引]
获取二维数组中某个一维数组中的元素: 数组名[n][m]
n: 你想获取的一维数组的索引
m: 一维数组中元素的索引
例子:
表示二维数组arr中的第1个一维数组里面的第2个元素 : arr[0][1]
表示二维数组arr中的第3个一维数组里面的第4个元素 :arr[2][3]

二维数组常规操作

遍历二维数组

int[][] arr = {{11, 22, 33}, {33, 44, 55}};

// 1. 遍历二维数组,取出里面每一个一维数组
for (int i = 0; i < arr.length; i++) {
    // 2. 在遍历的过程中,对每一个一维数组继续完成遍历,获取内部存储的每一个元素
    for (int j = 0; j < arr[i].length; j++) {
        System.out.println(arr[i][j]);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值