Java-数组补充

Java-数组补充

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 数据类型[]{值.值.值…};

image-20210522104303201

2.5.1 传值和传引用

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

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

image-20210522142540542

2.6 数组复制

2.6.1 自己实现

image-20210522142623530

2.6.2 API

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

image-20210522111025690

2.6.3 插入式复制

image-20210522143353390

3 二维数组

3.1 声明

3.1.1 静态声明

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

3.1.2 动态声明

数据类型 变量名[] [] =new int[x] [y];

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

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

3.2 基本操作

image-20210522182418661

4 Scanner

接收命令行输入

Scanner 对象名 = new Scanner(System.in);
//程序执行到此,就会进入等待状态,等待用户输入
//并且会把输入的值返回赋值给变量
//多个数据之间用空格隔开
String usrInput =对象名.next();
/*
接受一行数据,不需要分隔符
对象名.nextLine();
接受整数,必须是纯数字,小数点也不行
对象名.nextInt();
接受小数,可以有一个小数点
对象名.nextDouble();
*/

5 排序

5.1 交换变量的值

5.1.1 中间变量

image-20210522155828534

5.1.2 位移运算

image-20210522160202574

5.1.3 加减运算

image-20210522160252255

5.2 冒泡排序

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

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

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

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

嵌套循环:

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

​ 内层循环决定一轮比较多少次

image-20210522161755735

5.3 选择排序

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

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

image-20210522162941435

5.4 API

image-20210522163720659

6 二分法查找

建立在有序的基础上

数据中没有重复元素,如果有重复的,只能是先找到谁算谁

一般用于查找固定的有序数据,因为二分法不利于添加和删除

6.1 原理及过程

image-20210525201329387

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值