java数组

本文深入解析了Java中数组的定义、使用及操作,包括数组的初始化、复制、引用特性,以及如何构建非基本类型对象数组。同时,介绍了Java标准类库Arrays的多种静态方法,如fill(), equals(), binarySearch(), toString()等,以及数组排序和复制的方法。

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

数组的定义:是相同类型的、用一个标识符名称封装到一起的一个对象或基本类型数据序列。数组是通过方括号下标操作符[]来定义和使用的。要定义一个数组,只需在类型名后面加上一对空方括号即可:

int[] a1;
int[] a2  = {1,2,3};

java中可以将一个数组复制给另一个数组,但只是复制了一个引用。

无论使用哪种类型的数组,数组标识符其实只是一个引用,指向在堆中创建的一个真实对象,这个(数组)对象用以保存指向其他对象的引用。只读成员length是数组对象的一部分(这是唯一可以访问的字段或方法),表示次数组对象可以存储多少元素。[]是访问数组对象的唯一方式。

基本类型数组,数值型自动初始化为0,字符O,布尔boolean为false.

对象数组和基本类型数组在使用上几乎是相同的,唯一区别就是对象数组保存的是引用,基本类型数组直接保存基本类型的值。

java中数组是效率最高的存储和随机访问对象引用序列的方式。

对于基本类型多维数组,可以通过花括号将每个向量分割开。

如何逐个地、部分地构建一个非基本类型的对象数组:

public class Test{
public static void main(String[] args){
  Integer[][] a;
  a = new Integer[3][];
  for(int i =0;i<a.length;i++){
  a[i] = new Integer[3];
  for(int j=0;j<a[i].length;j++){
     a[i][j] = i*j;
}
}
System.out.println(Arrays.deepToString(a));
}
}

数组必须知道他们所持有的确切类型,以强制保证类型安全。

创建测试数据:

java标准类库Arrays有一个作用十分有限的fill()方法:只能用同一个值填充各个位置。

Arrays.fill(数组名,value);
public interface Generator<T> {

	T next();

}




class CountingGenerator{
	public static class Boolean implements Generator<java.lang.Boolean>{
		private boolean value = false;
		public java.lang.Boolean next(){
			value = !value;
			return value;
		}
	}
	
	public static class Integer implements Generator<java.lang.Integer>{
		private int value = 0;
		public java.lang.Integer next() {
			return value++;
		}
	}
}
public class GeneratorsTest {
   public static int size =10;
   public static void test(Class<?> suClass) throws InstantiationException, IllegalAccessException {
	   for(Class<?> type : suClass.getClasses()) {
		   System.out.print(type.getSimpleName()+":");
		   Generator<?> g = (Generator<?>)type.newInstance();
		   for(int i =0;i<size;i++) {
			   System.out.print(g.next());
			   System.out.println();
			   
		   }
	   }
	   
   }
   public static void main(String[] args) throws InstantiationException, IllegalAccessException {
	   test(CountingGenerator.class);
   }
}

Arrays类,有一套用于数组的static使用方法:

equals()用于比较数组是否相等。

fill()

binarySearch();用于已经排序的数组查找元素。

toString();产生数组的String;

复制数组:

System.arraycopy();

数组排序:

Arrays.sort();

应该优先选择容器而不是数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值