数组【重点】
1. 数组
1.1 为什么要使用数组
是否存在可能性需要一口气处理100个int类型数据???
开发中一定会出现对于相同数据类型的使用操作过程,但是如果按照一个一个的变量定义来进行数据处理,保存和操作,会导致以下一些问题
1. 代码过于臃肿。
2. 变量命名压力很大,阅读性极差
3. 对于数据的操作过程存在压力,没有【普适性】的操作方法
1.2 生活中数组概念
超市
对于商品进行归类处理,同一个区域是同一类商品,同一个货架是一种商品。
图书馆
书籍分类 T Technology
5楼东
1. <<电路>> 同一本书会存储于同一个书架位置上
2. <<电路>> 这本书会有一个唯一编号 T-150
3. <<电路>> 这本书有10本,每一本都有一个独立的编号
T-150-01 ~ T-150-10
总结:
1. 书籍存储统一,并且连续。
2. 书籍有一个统一名字 ==> 统一编号 T-150
3. 每一本书又是一个独立的个体,有一个唯一标记
T-150-01 T-150-05
1.3 Java中定义数组的格式【重点】
格式:
数据类型[] 数组名 = new 数据类型[容量];
赋值号左侧
数据类型:
告知编译器,当前数组中能够保存的数据类型有且只能是哪一个数据类型,其他类
型一概不允许,这里是为了保存【数据类型一致化】
[]:
1. 这里定义的是一个数组类型
2. 告知你数组名是一个【引用数据类型】【指向性】
数组名:
1. 操作数组非常重要的内容
2. 数组名是一个【引用数据类型】【变量】
赋值号右侧
new:
1. new关键字是向内存的【堆区】申请一块内存空间。
内存就是一个仓库,申请内存就是相当于找仓库管理员申请一块区域,用于保
存货物
2. 清空整个申请内存空间中的所有数据。
数据类型:
前后呼应,明确告知编译器当前数组中有且只能保存的数据类型是哪一个。
[容量]:
Capacity
告知编译器当前数组中能够保存的指定数组类型个数是多少个。
并且一旦确定当前容量数据,该容量不可以改变。
1.4 数组定义案例
int[] arr = new int[10];
1.5 数组下标
数组下标是当前数组中存储元素的唯一索引标记
比如说一个int类型数组,容量为10,这里就可以使用下标来区分数组中的每一个元素。
数组下标从 0 开始 到 数组容量 - 1
int[] arr = new int[10];
有效下标范围:
0 ~ 9
这里需要操作数组中指定下标元素
数组名[有效下标]; 可以赋值,可以取值
class Demo2 {
public static void main(String[] args) {
int[] arr = new int[10];
arr[0] = 10;
arr[5] = 20;
arr[-1] = 10;
System.out.println("arr[0] : " + arr[0]);
System.out.println("arr[5] : " + arr[5]);
}
}
1.6 数组内存分析图
1.7 数组和循环不得不说的秘密
数组算法中大量的使用到循环,尤其是for循环!!!因为数组存在有效下标操作的方式,并且下标操作有一定的范围和等差数列内容。
class Demo3 {
public static void main(String[] args) {
int[] arr = new int[10];
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 + "] = " + arr[i]);
}
}
}
1.8 数组地址转移分析图
2. 数组和方法关系
2.1 方法参数使用数组
public static void main(String[] args) {
}
需求
给予int类型数组赋值操作
方法分析:
public static
不要问,固定格式
返回值类型:
void
方法名:
【见名知意,动宾结构,小驼峰命名法】
assignIntArray
形式参数列表:
这里所需的参数是int数据类型数组
(int[] arr);
方法声明:
public static void assignIntArray(int[] arr);
class Demo5 {
public static void main(String[] args) {
int[] array = new int[10];
assignIntArray(array);
printIntArray(array);
}
public static void assignIntArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
arr[i] = i + 1;
}
}
public static void printIntArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.println("arr[" + i + "] = " + arr[i]);
}
}
}