数组第一讲

数组

图书馆

《物理》 1977年 5本 会放到同一个书架上
T-110-01 ~ 05
人们生活中最基本的归纳总结思想:
1. 放到一起,在同一个书架上
2. 这类书会一个独立的编号 T-110
3. 每一本书又是一个独立的个体,利用末尾编号的不同来区分不同的个体 T-110-01 T-110-04

开发中遇到的问题

在代码开发中经常使用大量的相同数据类型的变量,如果按照定义变量的格式,在代码中会出现重
复很多次的语句,而且给这些变量起名也是一个很浩瀚的工程。
1. 代码中有很多冗余
2. 变量名都会非常类似,降低阅读性和维护性
3. 操作不方便,因为变量名非常类似

参考图书馆处理相同图书的方式:
1. 【数据类型一致的】变量放到一起,类似于同一种书籍放到同一个书架上
2. 给这些数据起一个统一的名字,类似同一种书会有一个统一的编号 T-110
3. 为了区分不同的个体,给他这些数据一个独立的编号 T-110-01 ~ T-110-05

如何定义一个数组

变量定义的格式:
数据类型 变量名 = 初始化数据;

定义数组的格式:
public static void main(String[] args) 大宝天天见
数据类型[] 数组名 = new 数据类型[元素个数];

例如:

int[] arr = new int[10];
/*
赋值号左边:
	int: 数据类型,告诉你这个数组中保存的数据是什么类型。这里表示该数组中要保存的数据是int类型
	[]: 1. 告诉你这是一个数组类型数据 
		2. arr是一个数组名,而且是一个【引用】数据类型 【重点知识】
	arr: 数组名,操作数组使用的名字,是一个标识符,要求符合标识符的命名规范
赋值号右边:
	new: 关键字 "创建数组的关键字"
	int: 数据类型,表示当前数组中保存的数据是int类型
	[10]: 表示该数组【元素个数】为10,数组中可以保存10个int类型的数据。
		有些书籍: 数组的长度,数组的大小,数组的容量~~~
*/

如何使用数组

使用数组的格式:
数组名[有效下标];

在计算机世界里,基本上所有的东西都是从0开始的
例如:
元素个数/容量为10的数组,有效下标的范围是0 ~ 9
数组的下标是从0开始到数组的元素个数/容量 - 1

数组的内存分析

数组内存分析

数组作为函数的参数

//例如:
//public static void main(String[] args)
import java.util.Scanner;

class Demo5 {
	public static void main(String[] args) {
		int[] array = new int[10];
		
		System.out.println("请输入10个整数:");
		//一个函数/方法,需要的参数是一个数组类型那么这里只要提供数组名就OK
		getNumbersFromKeyboard(array);
		
		printIntArray(array);
	}
	
	/**
	*从键盘上获取int类型数据保存到数组中
	*@param array 传入的用户保存数据的int类型数组
	*/
	public static void getNumbersFromKeyboard(int[] array) {
		//参数合法性判断
		if (null == array) {//传入的空间首地址为null
			System.out.println("传入参数不合法");
			return; //结束程序运行
		}
	
		Scanner sc = new Scanner(System.in);
		//利用for循环,从键盘上获取用户输入的数据
		for (int i = 0; i < array.length; i++) {
			array[i] = sc.nextInt();
		}
	}
	
	/**
	*展示int类型的数组到命令行
	*@param array 传入的要求展示的int类型数组
	*/
	public static void printIntArray(int[] array) {
		//参数合法性判断
		if (null == array) {
			System.out.println("传入参数不合法!");
			return; //结束函数运行
		}
		
		for (int i = 0; i < array.length; i++) {
			System.out.println("array[" + i + "] = " + array[i]);
		}
	}
}

地址 【重点!!!】

生活中的地址:
河南省郑州市二七区航海中路60号海为科技园C区10/12层
河南省郑州市金水区纬五路21号河南教育学院综合楼6/7/8
地址中的编号不可能在同一个路上重复

代码中的地址是什么?
内存的编号:
4GB = 1024 * 1024 * 1024 * 4 Byte
在计算机中操作的最小单元是字节
计算机已内存中的【字节】为单位,从0字节位置开始到内存的最大值,每一个字节有一个特定的编
号。这个编号就是【内存地址】

0 ~ 4294967295 十进制表示

在开发中,通过会使用十六进制来表示内存地址
0x0 ~ 0xFFFFFFFF 内存地址的范围

0x0: 是内存中编号为0的空间首地址,这个地址是收到系统保护的!!!
这个地址,任何的程序,都不能读取或者写入数据。如果发生读写操作,直接被系统干掉!!!
null 这个就是0x0的关键字

null可以作为【引用数据类型】变量的初始值
int[] arr = null;

引用【重点!!!】

生活中你的引用通常是在文章来标注,当前内容是摘自那篇文章。这个引用可以用来跳转到这个文

代码开发中的引用:

一个变量保存的是另一个内存空间的地址,这个变量就称之为【引用】

数组中常见异常

ArrayIndexOutOfBoundsException: 数组操作下标越界
NullPointerException 空指针异常 操作null地址空间异常

数组的CRUD操作 和 排序 查询算法【重点】

CRUD:
Read 查询:
1. int[] arr = {1, 2, 4, 5, 6, 7, 8, 9, 10};
静态创建数组。请用代码告诉我元素3的下标是多少???
2. 用户输入10个数保存到数组中(函数), 利用函数找出数组中,最大值所在下标(唯一最大
值)以及最大值是什么?
3. 找出数组中的最大值,放到数组中下标为0的元素位置。
.

Update 修改

Create 增加

Delete 删除

猜你喜欢

转载自blog.csdn.net/forever428/article/details/82928194