5数组的使用

本文详细介绍了Java中的数组,包括定义、特点、创建、赋值、遍历、初始化及常用方法。数组长度固定,元素类型一致,可以是基本类型或引用类型。数组通过索引访问,索引从0开始。此外,还讲解了二维数组、数组操作如填充、复制以及Arrays工具类的使用。在方法参数传递中,数组作为引用类型传递的是地址值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组

定义:若干数据的集合。数组是相同数据类型的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们。

基本特点

1长度是确定的。数组一旦被建立,他的大小就是不可以改变的。

2其元素类型必须是相同类型,不允许出现混合类型。

3数组类型可以是任何数据类型,包括基本类型和引用类型。

4数组有索引,索引是从0开始的,到数组.length-1结束。

数组变量属于引用类型,数组也是对象。数组中的每个元素相当于数组的成员变量,数组对象是在堆内存中存储的。

定义数组:int [] arr;

//int arr2[];

//int[] arr3=null; 如果只进行声明,没有后续操作,那么这个数组相当于没定义。数组赋值为空和么有进行赋值的效果不一样。赋值为null时,没有在堆内存中开辟空间,而是在栈内存中赋值为null;

创建 :int [ ] arr=new int [4];

赋值:arr[0] = 12; arr[3] = 47; arr[2] = 98; arr[1] = 56; arr[2] = 66;

数组有默认初始话的值,byte:0 ;short:0; int :0; long:0; float:0 ; double :0; char :'\u0000' ; boolean[] :false;

使用: System.out.println(arr[0]+100);

数组长度:arr.length

遍历数组

普通for循环

 int[] scores = new int[10];
......
for(int i=0;i<=9;i++){
        System.out.println("第"+(i+1)+"个学生的成绩为:"+scores[i]);
                }

增强for循环

 int[] scores = new int[10];
 ......
 for(int num:scores){
 System.out.println(num);
 }

数组初始化

静态初始化

定义数组的同时就为数组元素分配空间并赋值。

int [] arr={12,12,4};

int []arr=new int[]{123,123,324};

注:new int[3]{234,234,2}是错误的

int [] arr;

arr={11,12,34};

是错误的。

动态初始化

数组定义与数组元素分配空间并赋值的操作分开进行。

int [] arr;

arr=new int [3];

arr[0]=12;

arr[1]=12;

arr[2]=12;

默认初始化

数组是引用类型,他的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式呗隐式初始化。

方法的实参传递给形参的时候一定要注意:一切都是值传递: 如果是基本数据类型,那么传递的就是字面值 如果是引用数据类型,那么传递的就是地址值`(即数组传递的是地址)

数组问题

1最值

2查询

3添加元素

当想数组某位置上添加元素时,后面元素都往后挪一个位置,最后一个元素被舍弃,不用添加

4删除元素

当删除某一个元素时,删除元素后面的元素往前挪一,然后最后位置补0

String[] args

在main方法的入口有一个形式参数String [] args是长度为0的数组

可变参数(参数数量可以改变)

int ...num

public static void fun(int ...num){

}

调用:fun(10);fun(10,20,30);fun()

可变参数和其他数据放在一起的时候,可变参数要放在最后面

public static void fun(int a,int ...num){

}

Arrays工具类

用来方便操作数组

int []arr ={1,2,3,4};

toString: Arrays.toString(arr) 对数组进行遍历,返回一个字符串

binarySearch:二分查找法,找出指定数组中指定元素对应的索引,但是这个数组必须是有序数列 ,排序:升序

Arrays.binarySearch(arr)

copyOf:完成数组的复制 Arrays.copyOf(ar)

copyOfRange:区间复制 Arrays.copyOfRange(arr,1,3)

复制arr数组索引1到3的复制,但不包括3 [1,3)

equals:比较数组值是否相等

Arrays.equals(arr1,arr2)

arr1==arr2 ==比较的是两个数组的地址值

fill:数组的填充

Arrays.fill(arr,1)

数组复制

arraycopy(Object src,int srcPos, Object dest, int destPos, int length)

src:源数组

srcPos:原数组的起始位置

dest:目标数组

destPos:目标数组的其实位置

length:要复制数组元素的数量

二维数组

二维数组的本质是一维数组

int [] [] arr= new [3] [];

arr[0]=new int[]{1,1,2,3};

arr[2]=new int [] {2}

二位数组初始化

静态初始化

int [] [] arr={{1,2},{2}}

int [] [] arr=new int[] []{{1,2},{2}};

动态初始化

int[] [] a =new int[2] [];

a[0]=new int[]{1,1,1}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值