首页 > 编程语言 > 详细

Java入门-数组

时间:2020-05-28 11:49:27      阅读:47      评论:0      收藏:0      [点我收藏+]

一维数组

一维数组的定义

数据类型[] 数组名;             // 声明一维数组
数组名 = new 数据类型[个数];   // 分配存储空间 

上述两步骤可合并成:

数据类型[] 数组名 = new 数据类型[个数];

int[] x = new int[5]为例,x的数据类型是一个对int型数组对象的引用。

如果想让x不指向任何数组对象,则可以使用x = null语句。执行该语句之后,原来得数组对象不再被任何引用变量所引用,也就变成了【垃圾】,直到垃圾回收器将他释放。

一维数组初始化

数组在用new分配内存空间时,数组每个元素都会被自动赋初值:

  1. 整数赋值为 0
  2. 浮点数赋值为 0.0
  3. 字符赋值为‘\0‘
  4. 布尔型赋值为false
  5. 引用型赋值为null

我们在定义数组的时候可以同时进行初始化操作:int[] x = {1, 2, 3, 4, 5}

此时数组x就是一个容量为5个int数据型存储空间,其中每一个元素的值依次为1, 2, 3, 4, 5

一维数组得访问

  • 使用下标访问

  • for-each语句访问一维数组

    int[] arr = {1, 2, 3};
    for (int elem : arr)
        System.out.println(elem);
    

二维数组

二维数组的定义

数据类型[][] 数组名;
数组名 = new 数据类型[行数m][列数n];

上述方法定义了一个m行n列的矩形数组。它也可以进行合并写成:

数据类型[][] 数组名 = new 数据类型[行数m][列数n];

与C语言不同,Java可以定义非矩形二维数组。如下图:

技术分享图片

int[][] x = new int[3][];
x[0] = new int[3];
x[1] = new int[2];

上述代码中x有三个元素,每个元素都是int[]类型得一维数组。相当于定义了三个一维数组引用变量,分别是int[] x[0]int[] x[1]int[] x[2]。然后再对元素x[0]x[1]赋值,由于x[2]没有被手动赋值,且又是一个引用变量,所以会被自动赋值x[2]=null

可以使用".length"属性获得数组得元素个数:

  1. x.length; // x的行数-3
  2. x[0].length; // x第一行的元素个数
  3. x[1].length; // x第二行的元素个数
  4. x[2]为null,不能使用lenght属性。

二维数组的初始化

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

上述数组为不规则数组,矩形数组也可以使用上述方式进行初始化操作。

二维数组定义常见错误的形式

二维数组要求必须指出高层维数。

常见形式:

  1. int[][] arr = new int[10][] 只指定高层维数。
  2. int[][] arr = new int[10][2]指定高底层维数。
  3. int[][] arr = new int[][10]错误。
  4. int[][] arr = new int[][]错误。

数组的equals方法

有时候我们需要判断两个不同数组对象中对应元素是否对应相等,此时可以使用java.util.Arrays类提供的equals方法。
实例如下:

package jinjie_01;

import java.util.Arrays;
public class Array_2D {
	
	public static void main(String[] args)
	{
		int[] arr = {1, 2, 3};
		int[] arr1 = {1, 2, 3};
		System.out.println(Arrays.equals(arr, arr1));
		
		int[][] arr2 = {{1,2}, {1}};
		int[][] arr3 = {{1,2}, {1}};
		System.out.println(Arrays.equals(arr2, arr3)); // 二维数组不能直接使用改方法判断
		// 二维数组可以逐行判断元素是否相等
		boolean flag = true;
		for (int i=0; i<arr2.length; i++)
			if(!Arrays.equals(arr2[i], arr3[i]))
			{
				flag = false;
				break;
			}
		System.out.println(flag);
	}
}
/*
运行结果:
true
false
true
 */

数组排序

使用Arrays.sort()对一个数组进行升序排序:

package jinjie_01;

import java.util.Arrays;
public class Array_2D {
	
	public static void main(String[] args)
	{
		int[] arr = {3, 3, 5, 6, 4, 3, 0};
		Arrays.sort(arr); // 升序排序,保存在arr数组中
		for(int x : arr)
			System.out.println(x);
		
		System.out.println();
		
		int[] arr1 = {3, 3, 5, 6, 4, 3, 0};
		Arrays.sort(arr1, 0, 5); // 对前5个元素进行升序排序,左闭右开[0,5)
		for(int x : arr1)
			System.out.println(x);
	}
}
/*
0
3
3
3
4
5
6

3
3
4
5
6
3
0
 */

Java入门-数组

原文:https://www.cnblogs.com/xxmmqg/p/12979014.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!