欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java基础:Day_05 数组高级

程序员文章站 2024-02-10 09:11:04
...

一、数组

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);	
	}
}