Java——数组的定义及使用

数组:一组相同数据类型的集合,长度固定
类集:动态数组
基本概念
1.1动态初始化
声明并初始化数组:
数据类型[]数组名=new 数据类型[长度];
声明并开辟长度为三的整型数组: int[] data=new int[3];
(1)当开辟数组空间后,所有数组内容为其数据类型默认值。
(2)访问数组元素使用数组名称[索引下标],索引从0开始,当访问下标超出数组长度时,会抛出运行时异常Array index out of bounds exception(数组越界异常)。
(3)数组属性length表示数组长度
数组命名.length返回此数组长度
(4)通过for循环来遍历数组
1.2数组的引用传递
引用数据类型: int a=20;
Int[]data=new int[3];
Data称为数组的引用(保存在栈内存),任何一个引用一定指向一块堆内存空间,只要看见关键字new,就一定在堆上分布空间。
内存分为以下两部分:
(1)栈内存:方法中的局部变量
(2)堆内存:存放数组内容、类对象内容(共享内存)
引用传递:多个栈内存共享一块内存地址(多个遥控器控制一个空调)eg:int x[]=null; 引用传递:x=data
1.3数组静态初始化
在声明数组时同时将数组内容赋值。数组长度依然固定,长度为给的值的长度。
完整格式:
数据类型[] 数组名称=new 数据类型[]{值1,值2,……};
简化格式:
数据类型[] 数组名称={值1,值2,……};
匿名数组:(只能用一次)没有任何栈内存指向的数组空间(没起名字)。
二维数组(表格)
int[][] data= new int[][]{{1,3,5},}
//遍历
For(int x=0;)
数组与方法的相互操作—引用传递
3.1方法接受数组
public class ArrayDemo{
public static void main(String[] args) {
int[] data = new int[] {1,2,3,4,5} ;
printArray(data) ; // 其效果等价于 int[] temp = data ;
}
public static void printArray(int[] temp) {
for (int i = 0 ; i<temp.length ; i++) {
System.out.println(temp[i]) ;
}
}
}
3.2方法返回数组
public class ArrayDemo{
public static void main(String[] args) {
int[] data = init() ;
printArray(data) ;
}
// 定义一个返回数组的方法
public static int[] init(){
return new int[] {1,2,3,4,5} ; // 匿名数组
}
public static void printArray(int[] temp) {
for (int i = 0 ; i<temp.length ; i++) {
System.out.println(temp[i]) ;
}
}
}
3.3方法修改数组
public class ArrayDemo{
public static void main(String[] args) {
int[] data = init() ;
bigger(data) ;
printArray(data) ;
}
// 定义一个返回数组的方法
public static int[] init(){
return new int[] {1,2,3,4,5} ; // 匿名数组
}
// 将数组中每个元素的值扩大5倍
public static void bigger(int[] arr){
for (int i =0 ; i<arr.length ; i++) {
arr[i]*=5 ; // 每个元素扩大5倍
}
}
public static void printArray(int[] temp) {
for (int i = 0 ; i<temp.length ; i++) {
System.out.println(temp[i]) ;
}
}
}
4.java对数组的支持
4.1数组排序
Java.util.Arrays.sort(数组名称)支持所有基础类型,默认为升序排序,内部使用双轴快速排序。
4.2数组拷贝
数组部分拷贝:价格一个数组的部分内容替换为另一个数组的部分内容(必须是连续的)
Systen.arraycopy(源数组名称,源数组开始点,目标数组名称,目标数组开始点,拷贝长度)
4.3数组全拷贝
类集动态扩容使用的就是此方法!
Java.util.Arrays.copyof(源数组名称,新数组长度):int[]
Eg:int[] data2= Java.util.Arrays.copyof(data1,15);

猜你喜欢

转载自blog.csdn.net/qq_43876267/article/details/88932959