不一样的数据--数组

不一样的数据–数组

导读

通过对本文的阅读,可以了解如下信息:

  • 知道一维数组的声明和初始化
  • 了解一维数组的一些操作,包括Arrays类中的一些方法
  • 了解多维数组的声明和初始化(以二维数组为例)

数组的分类

在Java中,数组可以将相同类型的数据用一个标识符(标识符的详细介绍)封装在一起。数组大致可以分为以下两种:

  • 一维数组
  • 多维数组

一维数组的声明的格式

dataType[] arrayName;//首选

dataType arrayName[]; 

建议使用dataType[] arrayName这种格式,dataType arrayName[]这种格式是C/C++中的书写格式。

实例

public class Demo{
	public static void main(String[] args){

		int[] myList;
		int myList2[];
	}
}

这个代码只是做了数组两种声明方式。

创建一维数组

创建数组的格式有如下几种:

dataType[] arrayName;//声明
arrayName=new dataType[size];//这种方式需要先声明

dataType[] arrayName2=new dataType[size];//声明和初始化一起

dataType[] arrayName3={1,2,3,4,5};//声明并进行初始化

实例

public class Demo{
	public static void main(String[] args){

		int[] arrayName; 
		arrayName=new int[5];
		int[] arrayName2=new int[5];
		int[] arrayName3={1,2,3,4,5};
	}
}

扩展:研究下声明和初始化的区别

只声明的实例

public class Demo{
	public static void main(String[] args){

		int[] arrayName; 
		System.out.println(arrayName);
	}
}

运行结果

Demo.java:10: 错误: 可能尚未初始化变量arrayName
		System.out.println(arrayName);
		                   ^
1 个错

然而初始化后的实例

import java.util.Arrays;
public class Demo{
	public static void main(String[] args){

		int[] arrayName; 	
		arrayName=new int[5];
		System.out.println(arrayName);
		System.out.println(Arrays.toString(arrayName));
	}
}

运行结果

[I@3764951d
[0, 0, 0, 0, 0]

这里输出的是数组的地址和默认初始化的值全是0,这里用的Arrays类来输出数组值,也可以通过循环来获取内部的数据。

结论:声明的时候,系统不会分配内存,只有初始化后才会分配相应的内存。

数组的操作

获取数组的长度

arrayName.length;//获取数组的长度

如何遍历数组

public class Demo{
	public static void main(String[] args){
	
		int[] arrayName={1,2,3,4,5};
		for(int i=0;i<arrayName.length;i++){
			System.out.println(arrayName[i]);
		}
	}
}

运行结果

1
2
3
4
5

通过循环以及下标来遍历数组。

数组的排序

import java.util.Arrays;
public class Demo{
	public static void main(String[] args){
		
		int[] arrayName={1,2,0,4,3};
		Arrays.sort(arrayName);
		System.out.println(Arrays.toString(arrayName));
	}
}

运行结果

[0, 1, 2, 3, 4]

这里用的是Arrays类中的sort()方法来进行排序默认是按升序。

Arrays类还有其他的一些操作:

  • 通过 fill 方法给数组赋值
  • 通过 sort 方法给数组排序,按升序
  • 通过 equals 方法比较数组中元素值是否相等
  • 通过 binarySearch 方法能对排序好的数组进行二分查找法操作,查找数组元素

方法说明

方法说明
public static void fill(int[] a, int val); 将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。
public static void sort(Object[] a); 对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。
public static boolean equals(long[] a, long[] a2); 如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。
public static int binarySearch(Object[] a, Object key); 用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。

实例

import java.util.Arrays;
public class Demo{
	public static void main(String[] args){

		//fill方法应用
		int[] arrayName=new int[5];
		Arrays.fill(arrayName,4);
		System.out.println(Arrays.toString(arrayName));

		//sort方法应用
		int[] arrayName2={2,4,8,3,1,5};
		Arrays.sort(arrayName2);
		System.out.println(Arrays.toString(arrayName2));

		//equals方法应用
		boolean hhhh;
		hhhh=Arrays.equals(arrayName,arrayName2);
		System.out.println(hhhh);

		//binarySearch方法应用
		int b;
		b=Arrays.binarySearch(arrayName2,8);
		System.out.println(b);
	}
}

运行结果

[4, 4, 4, 4, 4]
[1, 2, 3, 4, 5, 8]
false
5

多维数组

多维数组的声明格式(这里以二维数组为例)

type arrayName[][];
type [][] arrayName;

初始化

int arrayName[][]={{1,2},{2,3},{3,4,5}}; //静态初始化
int arrayName[][] = new int[2][3];//动态初始化

访问二维数组的元素

arrayName[i][j];

通过两个下标的形式来访问,二维数据表示的是矩阵,其中i代表行,j代表列

实例

public class Demo{
	public static void main(String[] args){

		int[][] arrayName={{1,2},{5,6,7},{3,4}};
		for(int i =0;i<arrayName.length;i++){
			for(int j=0;j<arrayName[i].length;j++){
				System.out.print(arrayName[i][j]+" ");
			}
			System.out.println();
		}			
	}
}

运行结果

1 2 
5 6 7 
3 4 

操作数组有一些注意事项,下一篇会讲解数组的一些坑。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值