Java基础:Day_05 数组高级

一、数组

1.多维数组

二维数组的初始化操作:
静态初始化:
int[][]  arr = new int[][]   {
	{1,2,3} ,
	{4,5},
	{6}
};
动态初始化:
int[][]  arr = new int[3][5] ;创建一个长度为3的二维数组,每一个元素(一维数组)的长度为5.
int[][]  arr = new int[0][5] 

2.Java5对数组的新语法支持:
1):增强for循环-foreach。
2):方法的可变参数。
但是其实在JVM的底层,依然是使用到的是for循环,因此如果没有特殊需求我们依然首选使用for语句,毕竟for语句依然是十分强大的!

//语法:
for(int index : nums )			//for(数据类型 操作数 : 数组名)
{
       System.out.println(index);
}

在以后的集合框架中,我们依然会使用到foreach语句。

关于方法的可变参数:

class Demo
{
	public static void main(String[] args)
	{
		double[] nums = new double[]{1.0, 2.0, 3.0, 4.0};
		double sum  = getSum(nums);
		System.out.println(sum);
	}

	static double getSum(double[] arr)
	{
		double sum = 0.0;
		for(double index : arr)
			sum += index;
		return sum;		
	}
}

为了求多个数之和,我还得先创建一个数组来存储数据.
如果多个数是变化的,比如求3个数之和,变成求5个数之和…,还得去修改我的数组,但是数组是定长的.
但我期望在主方法中调用求和的方法是这样的.:

double sum = getSum(1.0,2.0,3.0,4.0);

那么我们可以在定义方法时候使用这个语法:

static double getSum(double ... arr)	

方法的可变参数,其实也是一个语法糖,编译器级别的新特性,让开发者写代码更简单.
方法的可变参数其底层是就是一个数组类型.
可变参数必须作为方法的最后一个参数,避免参数的歧义性.
推论:方法最大只有一个可变参数.

二、自行封装数组操作工具ArrayUtil类
数组的算法操作,使用太频繁了,SUN公司就直接在JDK中提供了一个数组的工具类(Arrays).
java.util.Arrays类:

int binarySearch(type[] arr,type key)	//使用二分法查找数组里某元素并返回其索引,若找不到返回负数.
void sort(type[] arr)				    //使用调优后的快速法对指定数组排序。
String toString(type[] arr)	    		//返回指定数组内容的字符串表示形式。
public static type[] copyOf(type[] original, int newLength)	
//复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。

使用方法如下

class Demo
{
	public static void main(String[] args)
	{
		double[] nums = new double[]{8.0, 2.0, 3.0, 4.0, 5.0, 1.0};
		
		String ret_1 = java.util.Arrays.toString(nums);
		System.out.println(ret_1);

		java.util.Arrays.sort(nums);
		String ret_2 = java.util.Arrays.toString(nums);
		System.out.println(ret_2);	
	}
}

猜你喜欢

转载自blog.csdn.net/PandaNotPan/article/details/89207834