day_09_数组、排序

Java-数组-02

1 数组声明

1.1 静态声明

在知道数组中每个元素的值的时候,使用静态声明的方式

​ 数据类型[] 变量名 = {值,值,值…};

​ 数据类型 变量名[] = {值,值,值…};

​ int[] is ={1,2,3,4,5};

​ int is[] = {1,2,3,4,5};

1.2 动态声明

在预先不知道每个元素的值是多少的时候,使用动态声明,需要提前指定数组的容量大小,并使用默认值占位

​ 整数默认值0

​ 浮点默认值0.0

​ char默认值\u0000

​ boolean默认值false

​ 引用类型默认值null

​ 数据类型[] 变量名 = new 数据类型[长度];

​ int[] is = new int[5];

2 基本操作

2.1 获取数据(查)
数组对象(数组变量)[下标]

下标:index

首元素: 变量名[0];

数组长度: 变量名.length

尾元素: 变量名[length-1];

2.2 设置数据(改)

数组对象[下标] = 值;

2.3 遍历
使用循环进行遍历操作

for和foreach

//把arr数组中的元素依次取出并赋值给i

for(int i : arr)

2.4 常见异常

2.4.1 下标越界异常
报错: java.lang.ArrayIndexOutOfBoundsException

例如: 数组中长度为3,但是操作数组的下标大于数组长度-1,is[3]

2.4.2 空指针异常
报错: java.lang.NullPointerException

使用null值访问属性,所有就没有堆内存数组空间

所以找不到数组对象,就无法操作数组

注意: null和长度为0是两个不同的概念

2.5 数组传递
第三种声明方式 静态声明

数据类型[] 变量名 = new 数据类型[]{值.值.值…};

在这里插入图片描述

2.5.1 传值和传引用
​ 如果传入的是基本数据类型,传入的就是值

​ 如果传入的是引用数据类型,传入的就是引用地址

在这里插入图片描述

2.6 数组复制

2.6.1 自己实现
在这里插入图片描述

2.6.2 API
不需要自己去编写实现的功能,就是很多常用功能已经存在了,直接调用API即可

在这里插入图片描述

2.6.3 插入式复制
在这里插入图片描述

3 二维数组

3.1 声明
3.1.1 静态声明
数据类型[] [] 变量名 = {值,值,值…};

3.1.2 动态声明
数据类型 变量名[] [] =new int[x] [y];

x表示有几个一维数组也就是行

y表示一个一维数组中有几个元素,也就是列

3.2 基本操作
在这里插入图片描述

4 Scanner
接收命令行输入
在这里插入图片描述

5 排序
5.1 交换变量的值
5.1.1 中间变量

5.1.2 位移运算
在这里插入图片描述

5.1.3 加减运算
在这里插入图片描述

5.2 冒泡排序
比较相邻的两个元素,如果第一个比第二个大,就交换位置

对每一个相邻的元素进行重复操作,这样执行完一轮后,最后一个元素肯定是最大的

一直重复以上步骤,除了最后一个元素(比较次数一次递减)

直到没有任何一对元素,终止冒泡

嵌套循环:

​ 外层循环决定比较多少轮

​ 内层循环决定一轮比较多少次
在这里插入图片描述

5.3 选择排序

每次都把数组当中最小的放在左边

先拿出第一个,假设是最小的,然后挨个和后面的所有元素比较,找到最小的元素,放到前面

在这里插入图片描述
5.4 API

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值