java数组

数组概念

1、数组是一种数据结构,用来装多种数据
2、属于引用类型数据
3、数组都有 length 属性用于获得该数组大小
4、数组都有默认值int数组的默认0 String的默认是null  char的默认\u0000  boolean默认值false
5、数组只能装同一种类型数据
6、数组有下标(索引)0开始
7、数组在内存空间是连续的内存地址
8、数组把第一个位置的地址,当做整个数组的地址
9、数组查找效率很快,因为内部结构的地址是连续的,并且第一个元素上的地址是整个数组的地址
10、不适合存储大量数据,因为很难找到一块连续大空间,不适合随机增删,因为所有元素都要移位
11、数组分为一维数组、二维数组、多维数组
12、数组定义完大小以后,不能改变。但是数组可以扩容(例如声明一个大数组,将小的放进去)
13、数组可以循环遍历

在这里插入图片描述

数据的组成结构

数据类型【】 数组名 = {赋值}
静态初始化:例如int[ ] num = {1,2,3}
动态初始化:例如int[ ] nums1 = new int[3];

数组的两种初始化方式

静态初始化:例如int[ ] num = {1,2,3}
动态初始化:例如int[ ] nums1 = new int[3];
nums1 [0] = 1;
nums1 [1] = 2;
nums1 [2] = 3;
当我们知道具体值的时候,用静态。不知道用动态,但是要预估大小

数组赋值遍历与输出

数组的遍历:

数组遍历的方法:

在这里插入图片描述在这里插入图片描述

将引用数据类型的数据依次赋值给变量j

在这里插入图片描述
数组的赋值:
在这里插入图片描述
数组的输出:
在这里插入图片描述
要是对算数组内的值做运算可以用增强for循环,因为不需要考虑索引问题

Main方法里面的数组

public  static void main(String[] args){

}

在运行main方法时可以给其传参,比如有需求调用main方法时要传入参数

数组参数传递

参数传递都是把值传过去,不同于基本类型的参数传递(成员,局部)传值,引用数据类型值是存在堆里的,转递参数时会把地址信息传过去,所以改值就是直接改了
在这里插入图片描述

数组扩容

1、当小数组的空间满了后可定义一个大的数组将值赋过去
例如:

在这里插入图片描述
2、或者用内置api:arraycopy()方法

/*形参:
*src :要烤贝的数组
*srcPos :起始位置
*dest :目标数组
*destPos:目标数组的起始位置
* Length:拷贝个数.
*/
System.arraycopy();

二维数组

定义写法:
int [][] 
例如://静态初始化
int[][ ] nums1 = {{1,2},{2,3}};
//动态初始化
/*
2代表二维数组里面有两个一维数组
3代表一维数组有三个值
*/
int[][ ] nums2 = new int[2][3];
new一个对象就相当于在堆中开辟了一块内存空间,并把地址指向对象名

在这里插入图片描述

二维数组赋值

第一个0----二维数组里面第一个元素
第二个0----一维数组里面第一个元素
nums2[0][0] = 1;

使用循环取值:
在这里插入图片描述
使用循环取值:
在这里插入图片描述
只要是引用类型数据,那么默认一定是null,null调用方法时会报空指针异常

使用增强for取二维数组值

// arr值的是二维数组每一个一维数组
//k指的是一维数组里面具体的值

在这里插入图片描述

二维数组注意事项

定义不报错,但是你赋值的需要小心
String[][] strs = new String[3][];
strs[0] = new string[10];

操作数组的Arrays工具类

toString方法:返回指定数组内容的字符串表示形式。

例如:
int[ ] nums = new int[ 10];
System.out.print1n(Arrays.tostring(nums);

fill方法:对指定数组传值

例如:
Arrays.fill( num1,20) ;

binarySearch方法:使用二分法查找有序数组的指定值的索引

int[ ] num2 = {20233040508899};
int index = Arrays.binarySearch( num2,key:88);
system.out.println(index);
注意:当要查找的值不在数组内的话
返回-(该值插入点的索引+1)
int index = Arrays.binarySearch( num2,100); //-8

sort方法:对数组排序
equals方法:比较数组内的内容
引用数据类型直接比较是比较的内存地址

数组相关算法

冒泡排序

原理:就是找最大的值
在这里插入图片描述

二分法

在这里插入图片描述

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值