数组的定义和使用

数组是什么?

  数组就是用来存储一批同一批类型数据的内存区域(可以理解成容器),数组适合做一批同种类型数据的存储。

数组的定义

数组的基本原理

int[] ages = {12,24,36};

在这里插入图片描述
注意:数组变量名中存储的是数组在内存中的地址,数组是引用类型。

静态初始化数组

定义数组的时候直接给数组赋值。

静态初始化数组的格式:
//完整格式
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};
double[] scores = new double[]{89.9,99.5,59.5,88.0};
int[] ages = new int[]{12,24,36};
//简化格式
数据类型[] 数组名 = {元素1,元素2,元素3...};
int[] ages = {12,24,36};
数组的访问
int[] arr = {12,24,36};
//访问:数组名称[索引]
//取值
System.out.println(arr[0]);// 12

//赋值
arr[2] = 100;
System.out.println(arr[2]);// 100

//数组的长度属性:length
//获取数组的长度(就是数组元素的个数)
System.out.println(arr.length);// 3

//数组的最大索引可以怎么表示?
//数组名.length-1(前提:数组元素个数大于0)
数组的几个主义事项

1、“数据类型[] 数组名”也可以写成“数据类型 数组名[]”
2、什么类型的数组必须存放什么类型的数据,否则报错
3、数组一旦定义出来,程序执行的过程中,长度,类型就固定了

动态初始化数组

  定义数组的时候只确定元素的类型和数组的长度,之后再存入具体数据。

//数组的动态初始化格式
数据类型[] 数组名 = new 数据类型[长度];
int[] arr = new int[3];

//后赋值
arr[0] = 10;
System.out.println(arr[0]);// 10

在这里插入图片描述
用法:当前已经知道存入的元素值,用静态初始化。
   当前还不清楚要存入哪些数据,用动态初始化

动态初始化数组的元素默认值

元素默认值规则:
在这里插入图片描述

数组的遍历

遍历:就是一个一个数据的访问
为什么要遍历?搜索,数据统计等等都需要用到遍历
在这里插入图片描述

数组的案例

数组遍历-求和

//需求:某部门5名员工的销售额分别是:16,26,36,6,100,请计算出他们部门的总销售额。
	int [] money = {16, 26, 36, 6, 100};
        int sum = 0;
        for (int i = 0; i < money.length; i++) {
                sum += money[i];
        }
                System.out.println(sum);// 184

数组元素求最大值

//1、将数据拿到程序中去,用数组装起来
int [] beautiful = {15,10000,9500,15000,9000,-15};
//2、定义一个变量用于记录最大值,这个变量建议使用默认存储第一个元素值作为参照
int max = beautiful[0];
//3、遍历数组的元素,如果该元素大于变量存储的元素,则替换变量存储的值为该元素
for (int i = 1; i < beautiful.length; i++) {
//可以从1开始,因为第一个元素我们赋值给max了,不用再比较一次
		if(beautiful[i] > max){
			max = beautiful[i];
			}
        }

猜数字游戏

步骤:
1、动态初始化数组,存入5个随机的1-20之间的数据
2、定义一个死循环,不断的猜测,遍历数组,判断数据是否在数组中,如果在,进行对应提示并结束死循环;如果没有猜中,提示继续
在这里插入图片描述
在这里插入图片描述

随机排名

需求:某公司开发部5名开发人员,要进行项目进展汇报演讲,现在采取随机排名后进行汇报。请依次录入5名员工的工号,然后展示出一组随机的排名顺序。
在这里插入图片描述

数组的排序

就是对数组中的元素,进行升序(由小到大)或者降序(由大到小)的操作

冒泡排序

原理:每次从数组中找出最大值放在数组的后面去
步骤:总共需要做几轮:数组的长度-1.
每轮比较几次:数组的长度-i.
在这里插入图片描述

1、选择排序
2、快速排序
3、插入排序

数组的搜索

1、二分搜索
2、分块查找
3、哈希表查找

数组的内存图

Java内存分配、数组内存图

Java内存分配:
1、栈:
  方法运行时所进入的内存,变量也是在这里
2、堆:
  new出来的东西会在这块内存中开辟空间并产生地址
3、方法区:
  字节码文件加载时进入的内存,编译后的(Hello World.class)文件放在这
在这里插入图片描述
4、本地方法栈
5、寄存器

两个变量指向同一个数组

在这里插入图片描述

数组使用的常见问题

1、如果访问的元素位置超过最大索引,执行时会出现ArrayIndexOutOfBoundsException(数组索引越界异常)
2、如果数组变量中没有存储数组的地址,而是null,在访问数组信息时会出现NullPointerException(空指针异常)

Debug工具的使用

IDEA自带的断点调试(排错)工具,可以控制代码从断点开始一行一行的执行,然后详细观察程序执行的情况。
使用步骤:
1、在需要控制的代码行左侧,点击一下,形成断点
2、选择使用Debug方式启动程序,启动后程序会在断点暂停
3、控制代码一行一行的往下执行

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Langfeiluo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值