【Java】数组

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

       int [ ] array;

       也可以将方括号放于标识符后面:

       int array [ ]; // 这也是C/C++中数组的定义方式

     

       1.数组的初始化:

       1)int [ ] array = {1,2,3,4,5}; // 这种方式只能用于数组创建之时

       2)int [ ] a1 = array; // 定义一个数组的引用,并用另一个数组的引用给这个引用赋值

       3)int [ ] = new int[10]; // 创建指定大小的数,如果没有对数组的元素初始化,则编译器将数组元素默认初始化为0(null);

       2.所有的数组中都有一个固有成员,可以通过它获知数组内包含了多少个元素,但不能对其修改(只读),这个成员就是length,而且它只表示数组的大小而不是实际保存的元素个数。

       3.数组的下标是从0开始的,直到length - 1,如果下标超出这个有效范围,程序运行时将出现数组下标越界之异常。


       程序实例:

public class Test {

	public static void main(String[] args) {
		int[] array1 = { 1, 2, 3, 4, 5 };
		int array2[] = array1;
		int[] array3 = new int[5];

		for (int i = 0; i < array2.length; i++) {
			array2[i] = array2[i] * 10;
		}

		for (int i = 0; i < array2.length; i++) {
			System.out.println(array1[i]);
		}
	}

}

程序输出:10,20,30,40,50


       5.多维数组

       1)int [ ] [ ]  a = { { 1,2,3,},{4,5,6, }, { }, }; // 特别之处是可以在最后一个元素后面加,以便于代码的修改

       2)int [ ] [ ]  b = new int [5][ ] ;


       6.Java类库中的Arrays(下面介绍的这几个方法都是static方法且参数只适用于一维数组)

       1)Arrays.fill() —— 只能用同一个值填充各个位置,而只对对象而言,就是复制同一个引用进行填充;

       2)Arrays.equals() —— 用于比较两个数组是否相等(deepEquals()用于多维数组);

       3)Arrays.sort() —— 用于对数组排序;

       4)Arrays.binarySearch() —— 用于在已排序数组中利用二分查找法查找元素;

       5)Arrays.toString() —— 产生数组的String表示;

       6)Arrays.hashCode() —— 产生数组的散列码;

       此外,Arrays.asList() —— 接受任意的序列或数组作为其参数,并将其转变为List容器

       复制数组的方法 System.arrayCopy(); // 其需要的参数分别为:原数组,从原数组的那个位置开始复制,目标数组,复制到目标数组中的起始位置,要复制的元素个数


       程序实例:

public class TestArray {

	public static void main(String[] args) {

		int[] array1 = new int[10];
		int array2[] = new int[10];

		// 数组的填充
		Arrays.fill(array1, 0);
		Arrays.fill(array2, 1);

		// 比较两个数组是否相等(长度相等,数组中的各个元素也相等才是真相等)
		System.out.println("array1==array2 : " + Arrays.equals(array1, array2));

		for (int i = 0; i < array1.length; i++) {
			array1[i] = new Random().nextInt() % 1000;
		}

		// 数组复制
		System.arraycopy(array1, 0, array2, 0, array1.length);
		System.out.println("array1==array2 : " + Arrays.equals(array1, array2));

		// 将数组转化为字符串打印输出
		System.out.println("array1=" + Arrays.toString(array1));

		// 对数组进行排序——基本类型使用快排,非基本类型使用归并排序,其中字符串按照字典序进行排序
		Arrays.sort(array1);
		System.out.println("array1=" + Arrays.toString(array1));

		int findValue = 10;
		// 利用二分法在数组中查找指定元素——如果找到则返回其插入的恰当位置(插入点),反之返回一个负值(-插入点-1)
		int position = Arrays.binarySearch(array1, findValue);
		System.out.println("position=" + position);
	}
}

程序的输出:

array1 == array2 : false
array1 == array2 : true
array1 = [-980, 342, -564, -933, 360, 618, -124, -759, -78, 103]
array1 = [-980, -933, -759, -564, -124, -78, 103, 342, 360, 618]
position = -7




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值