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