Java(十一)中的数组

数组的概念

    一组数据,类型相同的数据

为什么要有数组这个数据结构呢

这样的代码是不存在错误的,但是存在了许多的重复,你需要不停的定义int类型和变量名,当少数只有几个数据的时候,你写的话可能还行,但是如果是30个、50个、100个同学的成绩要存起来呢?

大量的重复,你一定会敲到怀疑人生。

数组它用一组连续的内存空间,存储一组具有相同类型的数据,

数组因具有连续的内存空间的特点,让数据拥有非常高效率的“随机访问”,但也是因为要保持这个连续的内存空间,导致数组在删除或插入操作的时非常低效。因为数组为了保持连续性,必然会涉及大量数据的搬移,这个是非常消耗时间的。

思考:这里你可能会有疑问:什么是连续的内存空间?

首先,我们来说说内存,内存是由一个个连续的内存单元组成的,每一个内存单元都有自己的地址。在这些内存单元中,有些被其他数据占用了,有些是空闲的。

然而数据中的每个元素,都存储在小小的内存单元中,并且元素之间紧密排列,既不能打乱元素的存储顺序,也不能跳过某个存储单元进行存储。

数组的具体表现形式

星期就是一组数据,早餐费用就是一组数据,分别可以用代表星期的数组,和代表早餐费用的数组来表示。

工号,姓名同样是一组数据

数组从三个维度去说明,分别是类型,数量,值

 数组的定义

定义格式

T[] 数组名 = new T[N];  

  • T:表示数组中存放元素的类型
    T[]:表示数组的类型
    N:表示数组的长度

int[]  x;//利用new 来为数组型变量分配内存空间

x=new int[100];//分配100个int类型的数据空间,能存放100个int类型的数

声明+赋值:int[] x=new int[100];

练习:申明一个String 类型的数组,分配10个String类型的数据空间

           申明一个double 类型的数组,分配10个double类型的数据空间

double[] array2 = new double[5]; // 创建一个可以容纳5个double类型元素的数组 
String[] array3 = new double[3]; // 创建一个可以容纳3个字符串元素的数组

数组在内存中的存放

java内存有栈内存和堆内存,栈内存里放的是变量名,方法名,全局变量,函数名等

堆内存里具体放的是地址

int[] x=new int[100];在内存里是怎么表示的,x在栈内存,数组的值放在堆内存里

就是将数组的值在堆内存的地址赋给了x

数组的赋值

1.动态初始化

在创建数组时,直接指定数组中元素的个数

动态分配int[] array = new int[7];

数组赋值 array[0]=1;array[1]=2;array[3]=3;array[4]=4;array[5]=5;array[6]=6;

红色部分叫索引值 也叫下标 从0开始 [ ]里边的是索引值

访问某个元素 array[索引值]

System.out.pringln(array[3]);

2.静态初始化

在创建数组时不直接指定数据元素个数,而直接将具体的数据内容进行指定

语法格式:T[] 数组名称 = {data1, data2, data3, …, datan};

int[] array = {1,2,3};
int[] array1 = new int[]{0,1,2,3,4,5,6,7,8,9};
double[] array2 = new double[]{1.0, 2.0, 3.0, 4.0, 5.0};
String[] array3 = new String[]{"hell", "Java", "!!!"};
静态初始化虽然没有指定数组的长度,编译器在编译时会根据{}中元素个数来确定数组的长度。
静态初始化时, {}中数据类型必须与[]前数据类型一致。
静态初始化可以简写,省去后面的new T[]。

注意点

如果没有对数组进行初始化,数组中元素有其默认值

如果数组中存储元素类型为基类类型,默认值为基类类型对应的默认值,比如:

如果数组中存储元素类型为引用类型,默认值为null

数组的长度

System.out.println(array.length);

循环遍历数组

int[] array = {1,2,3};
for (int i = 0; i < array.length; i++) {
    System.out.println(array[i]);
}

打印数组的值

int[] array = {1,2,3};
System.out.println(Arrays.toString(array));

数组的排序

int[] array = {3,6,3};

Arrays.sort(array);
System.out.println(Arrays.toString(array));

查看各种方法参考https://www.matools.com/api/java8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

薛定谔的猫1981

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值