您的位置:首页 > 编程语言 > Java开发

JAVA学习——————Day11

2020-05-05 12:30 806 查看

1.初识数组

1.1 生活中的数组

超市
商品货物的存放,是不是分门别类???
分门别类有什么好处???
便于管理,便于查找
理念 【归纳总结】

图书馆:
1. 社科类,文学类,管理类,小说类,历史类,语言类
2. 相同的书籍会存放于一个书架上 【同一个位置】
3. 每一本书都要有一个唯一的编号 【同样的称呼】 W-101
4. 同一本有10本,都会有一个唯一的索引
W-101-01 ~ W-101-10 【唯一索引】

通过图书馆我们可以概括
1. 存储位置一致,并且连续
2. 有统一的称呼,方便管理
3. 存在唯一索引,具有一定的唯一性

1.2 开发中的实际情况

开发中一定存在对于大量相同数据处理的过程!!!

如果按照单一变量的定义方式,会导致
1. 代码冗余!!!
2. 代码维护性极差!!!
3. 代码可操作性极差!!!
4. 代码阅读性极差!!!

这里可以模仿生活中的案例,图书馆,超市,把这些同一个数据类型的数据,存放在一起,方便管理和使用
引入数组使用的场景和概念!!!
1.3 java中创建数组的方式

案例
int[] array = new int[10];
/*
赋值号左侧:
int:
告知编译器,这里创建定义的是一个int类型数组,有且只能保存int类型数据,保
证数据类型一致化
[]:
1. 告知编译器,当前定义的数据类型是一个数组类型
2. 数组名 array是一个【引用数据类型】
array:
1. 这里是一个数组名,操作数组的核心数据!!!就是一个变量名
2. 数组名 array是一个【引用数据类型】

赋值号右侧:
new:
new关键字需要在计算机中申请【连续内存空间】,这块区域在内存的【堆区】
【生活案例】这里就好比,顾客找仓库管理员申请货架,管理员一定是给你一个整
个连续区域给你使用
int:
前后呼应,告知编译器这里能够存储的数据类型是int类型,其他类型都不可以,要
求数据类型一致化
[10]:
告知编译器,当前数组的【容量 Capacity】是多少,这里是10,也就是说当前数
组中有且只能保存10个int类型数据
*/

1.4 引用数据类型

引用在生活中很常见,比如 文献中引用,文言文注解引用,广告角标上标引用,这些目的,引入其他的内容,其他的文献,其他的操作…
引用存在的一定的【指向性!!!】

取快递
快递小哥如何知道你的地址在哪里???
根据快递单上的地址,联系方式和姓名来找到你的位置。
快递单这里也存在一定的【指向性!!!】

快递单中存有一个非常重要的数据【地址】!!!

开发中的【引用数据类型】,实际上是一个指向其他内存空间的一个数据类型。引用数据类型的变量中存储的内容是其他内存空间的【首地址】。
当CPU访问到【引用数据类型】变量时,会得到其存储的地址,然后直接跳转到对应的内存空间中,执行代码,获取数据,操作内容...
1.5 定义数组和使用

定义数组:
int[] array = new int[10];

需要操作数组中哪一个元素,这里需要使用数组的【下标】
计算机内数据的开头都是从0开始,数组容量为10的情况
有效下标的范围
0 ~ 9
0 ~ 数组容量 Capacity - 1

操作格式:
数组名[有效下标]

示例
/* 演示数组的定义和使用 */
class Demo2 {
public static void main(String[] args) {
/* 这里定义一个int类型的数组,数组的容量为10 */
int[] array = new int[10];

/*
给数组中下标为0的元素赋值
格式: 数组名[有效下标]
*/
array[0] = 10;

/*
给数组中下标为5的元素赋值
*/
array[5] = 20;

/*
给数组下标为10的元素赋值30
10 已经超出了有效下标范围 0 ~ 9

array[10] = 30;
*/
/*
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Demo2.main(Demo2.java:22)
ArrayIndexOutOfBoundsException	数组下标越界异常
*/

/*
给数组中下标为-1的元素赋值为20
-1 已经超出了有效下标范围 0 ~ 9
*/
// array[-1] = 20;
/*
java.lang.ArrayIndexOutOfBoundsException: -1
*/

/*
取出数组中下标为0和下标为5的元素内容
*/
System.out.println("array[0] : " + array[0]);
System.out.println("array[5] : " + array[5]);
// System.out.println("array[4] : " + array[4]);

}
}
1.6 数组内存分析图

1.7 数组与for循环之间的关系
示例
class Demo3 {
public static void main(String[] args) {
/* 定义一个int类型数组 容量为10 */
int[] arr = new int[10];

/*
数组名.length
获取当前数组的【容量 Capacity】,获取数组的【属性】
*/
for (int i = 0; i < arr.length; i++) {
// 给数组中每一个元素赋值操作
arr[i] = i + 1;
}

// 利用循环展示数据
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
双双的小猪猪 原创文章 17获赞 0访问量 235 关注 私信
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: