java中的数组

3.10数组

数组是一种数据结构,用来存贮同一类型值得集合。

在声明数组变量时,需要指出数组类型(数据元素类型紧跟[])和数组变量的名字。例如:int[] a;

不过这条语句只声明了变量a,并没有将a初始化为一个真正的数组。应该使用new运算符创建数组。int[] a=new int[100];

在java中不要求数组长度是常量。

在创建一个数字数组时,所有元素都初始化为0。boolean数组的元素初始化为false。对象数组的元素初始化为null,这表示这些元素还未存放任何对象。

3.10.1 for each循环

for each循环语句的循环变量将会遍历数组的每一个元素,而不需要使用下标值。

举个例子:

public class Print {
    public static void main(String[] args)  {
        int n;
        Scanner in = new Scanner(System.in);
        n=in.nextInt();
        int[] a=new int[n];
        for (int i:a) {
            System.out.println(i);
        }
    }
}

tips:有个更简单的方法打印数组的所有值,即利用Arrays类的toString方法,调用Arrays.toString(a),返回一个包含数组元素的字符串。

3.10.2数组初始化以及匿名数组

int[] a={1,2,3};

a=new int[]{1,2,3};

3.10.3数组拷贝

在java中,允许将一个数组变量拷贝给另一个数组变量。这时,两个变量将引用同一个数组。

public class Print {
    public static void main(String[] args)  {
        int[] a={1,2,3};
        int[] b=a;
        b[1]=100;
       System.out.println(Arrays.toString(a));
       System.out.println(Arrays.toString(b));
    }
}

如果希望将一个数组的所有值拷贝到一个新的数组中去,可调用Arrays类的copyOf方法。

public class Print {
    public static void main(String[] args)  {
        int[] a={1,2,3};
        int[] b;
        b=Arrays.copyOf(a,2*a.length);
        System.out.println(Arrays.toString(a));
        System.out.println(Arrays.toString(b));
    }
}

3.10.4命令行参数

在主函数的参数中,经常见到String[] args ,表明main方法将接收一个字符串数组,也就是命令行参数。

举个例子:

public class Hello{
	public static void main(String[] args){
		if(args.length==0||args[0].equals("-h"))
			System.out.print("Hello,");
		else if(args[0].equals("-g"))
			System.out.print("Goodbye,");
		for(int i=1;i<args.length;i++){
			System.out.print(" "+args[i]);
		}
		System.out.print('!');
	}
}

下图是输出
在这里插入图片描述

3.10.5 数组排序

Arrays类中的sort方法

Arrays.sort(a);//优化的快速排序算法,默认升序

那降序怎么办?

提供两种办法吧。第一种比较直接

public class Print {
    public static void main(String[] args)  {
        Integer[] a={1,2,3,8,5,7};
        Arrays.sort(a,Collections.reverseOrder());
        System.out.println(Arrays.toString(a));
    }
}

第二种也比较直接吧!

public class Print {
    public static void main(String[] args)  {
        Integer[] a={1,2,3,8,5,7};
        Arrays.sort(a, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2-o1;
            }
        });
        System.out.println(Arrays.toString(a));
    }
}

这里sort方法的第二个参数是一个匿名内部类

3.10.6多维数组

double[][][] [] a=new double[100] [100];

遍历它也可以使用for each,也可以调用Arrays的方法直接输出:例如

public class Print {
    public static void main(String[] args)  {
        double[][] b={
                {1,2,3},
                {4,5,6},
                {7,8,9},
        };
        for (double[] row:b) {
            for (double value:row) {
                System.out.println(value);
            }
        }//增强for
        System.out.println(Arrays.deepToString(b));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值