Java数组

数组

一、数组概念

1、数组是用来存储一组相同 数据类型数据的数据结构。

2、数组也是一种引用类型

3、数组的元素可以是简单类型的数据(基本数据类型),也可以是引用类型的数据。

二、一维数组

1、一维数组定义

在数组定义中,不能指定数组的长度,而需要在创建阶段来指定。

定义方法有两种:

  • type[]arr_name;

  • type arr_name[];

    例如:int[] a;float b [];

2、数组的创建

  • 在声明数组时,不能指定数组的大小
  • 通过new操作符来创建数组对象,指定数组的大小,给数组元素的存储分配空间

3、数组的初始化

  • 在创建完数组后,可以对数组进行初始化。也就是给数组中的各个元素进行赋值。
  • 有两种方式赋值:
    • 静态初始化
    • 动态初始化
//1.静态初始化
/**完成三步动作
数组变量的定义
数组对象的创建
数组对象的初始化
**/
int [] a = new int[10];
a[0] = 20;


/**2.动态初始化
就是将数组的定义和数组的初始化分开来进行

**/
int[]a;
a = new int [10];
for(int i = 0;i<10;i++){
  a[i] = 2*i +1;
}

4、简单数据类型数组内存分析

  • 简单数据类型数组的定义

在定义数组的时候,系统会给这个数组分配用于存放这个数组的内存空间。

以int类型为例,当定义一个整数类型数组

int【】arr;

在这里插入图片描述

  • 简单数据类型数组的创建

在创建简单数据类型的数组的时候,系统会分配合适的空间用来存放该种数据类型数据的内存空间,并且将这个数组的各个元素赋一个和数组类型匹配的初值。

如 arr = new int[10];

在这里插入图片描述

  • 初始化

对于简单数据类型的数组,当对其进行初始化时,会将对应的值赋给对应的各个数组元素。

5、引用数据类型数组内存分析

  • 引用数据类型数组的定义

引用类型数组的定义和简单类型数组的定义没什么区别,也是在栈中开辟内存

如 String[]arr;

在这里插入图片描述

  • 引用数据类型数组的创建

首先给数组元素分配内存空间,然后给这些数组元素一个默认的初始值null

如:arr = new String[10];

在这里插入图片描述

  • 引用数据类型数组的初始化

和简单数据类型数组不同。因为数组本身是引用类型,而现在的数组元素也是引用类型,所以这个时候需要给数组元素所引用的对象也分配内存空间

在这里插入图片描述

6、数组元素的引用

  • 通过数组名和数组索引来引用一个数组中的元素,数组的索引从0开始到数组长度-1结束。
  • 可以使用数组的一个属性length来获得数组的长度

三、二维数组/多维数组

1、对数组排序

实际应用中,不用自己写算法来排序。Arrays类中有一个静态方法sort,可以用这个类的sort方法来对数组进行排序。是一种调优的快速排序。

2、数组拷贝

  • 可以将一个数组变量拷贝给另一个数组变量,这个时候,这两个数组变量均指向相同的数组。
  • 如果只是需要将数组的值拷贝到另一个数组,可以使用System的一个静态方法arraycopy(),有四个参数:from,fromIndex,to,toIndex,count,意思是将数组from中的索引为fromIndex开始的元素,拷贝到数组to中索引为toIndex的位置,拷贝的元素个数为count个。

3、多维数组

  • Java中支持多维数组,多维数组的声明是通过每一维一组方括号的方式来实现

如:

二维数组: int【】【】,

三维数组:int【】【】【】

当使用new来创建多维数组时,不必指定每一维的大小,而只需要指定最左边的维的大小就可以了。

  • 创建多维数组

知道数组元素,可以不用new,直接初始化数组

int【】【】a = {{1,2},{10,2},{20,1}}

new来创建

int a【】【】 = new int【4】【5】;

int b【】【】 = new int【3】【】;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zero摄氏度

感谢鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值