java 核心技术卷I学习记录(三)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhao__zhen/article/details/82760841

java 核心技术卷I学习记录(三)

接上次记录的数组未完成部分。

数组

  • for each 循环

语法格式为:

for (varibable : collection) statement

variable : 是定义的一个用于暂存集合中每一个元素。
collection : 一个数组或者是实现了Iterable接口的类对象(例如是ArrayList

for each 语句的好处就在于语法简洁,更不容易出错(不必为下标的起始值和终止值而操心)

数组初始化:

int[] smallPrimes = {2,3,4,5};
int intArray = new int[100];
new int[] = {17,19,21,23};//初始化一个匿名函数
smallPrimes = new int[] {7,8,9,10};//在不创建新变量的情况下重新初始化一个数组

注意: 在java中,是允许数组长度为0的。在编写一个结果为数组的方法时,如果碰巧结果为空,则这种语法形式就显得特别有用。此时可以创建一个长度为0的数组:new elementType[0].但是要注意的是数组长度为0与null不同。

  • 数组拷贝
int [] smallPrimes = {2,4,6,8,10};
int [] luckNumbers = smallPrimes;

以上代码中smallPrimes 和 luckNumbers 实际上是引用的是同一个数组。

如果在实际需求中真的需要将一个数组拷贝到一个新的数组中时,可以使用Arrays类的copyOf方法。那么以上代码就可以改写为:luckNumbers = Arrays.copyOf(smallPrimes,smallPrimes.length),但是这个方法多用于拓展数组的大小。在使用时就是讲数组的长度变大就可以了,如果整形数组的话,那么多余的元素将会被赋值为0,如果数组元素是bool型则将被赋值为false。相反如果长度小于原始数组的长度,则只拷贝最前面的数据元素。

在java main 函数中都带一个String arg[]参数,是因为main方法要接收一个字符串数组,这个字符串数组就是命令行参数。在执行java程序是可以在后面添加参数,如java Message -g cruel world ,使用java命令执行Message 类,如果在main方法中输出args的内容时,就会发现args数组中包含args[0]:"-g“,args[2]:“cruel”,args[3]:"world"

  • 数组排序

对数值型的数组排序时,可以使用Arrays类中的sort方法,sort方法是使用优化的快速排序算法。

		int [] smallPrimes = {2,4,5,10,23,444};
        Arrays.sort(smallPrimes);
        for (int a: smallPrimes) {
            System.out.println(a);
        }

数组的相关API可去查阅java 开发文档

  • 多维数组
    多维数组在使用foreach 循环时,是按照行来处理的,所以要访问二维数组a的所有元素,需要使用两个嵌套循环。例如:
for (double[] row : a)
	for (double value : row)
		something to do

要想快速的打印一个二维数组的数据元素列表,可以使用 system.out.println(Arrays.deepToString(a))
假设有一个array[10][6]的数组,在使用double[][] array = new double[10][6]进行初始化时,java时分配了一个包含十个指针的数组,然后指针数组的每一个元素被填充了一个包含6个数字的数组

猜你喜欢

转载自blog.csdn.net/zhao__zhen/article/details/82760841