Java数组讲解

开端

  刚刚开始学习Java,说一句实话,学校的教材真的是ugly和low。老师基于我们有C语言基础,就没讲数组,叫我们直接看书。好家伙这一看不得了,书上太详细,太绕了,还是干条条堪比马克思主义那样晦涩难懂。有一年了吧,该学习的还是得学习,该强化的还是要强化,Let’s GO!

1.声明数组

   数组是存储相同类型值的序列。 你可以把它看做一种数据结构,用来储存同一类型值的集合。通过一个整型下标 (index,索引) 可以访问数组中的每一个值。例如:a 是一个整型数组,a[i] 就是数组下标为 i 的整数
  在声明数组变量时,需要数组类型和数组变量的名字,如:

int[] a;

  不过这条语句只是声明了变量a,并没有将a初始化为一个真正的数组。就好像说有一个人叫a,但是没有身份证信息,长相,声音等特征,他是不是一个具体的人呢?所以接下来我们可以用new来创建这个具体的数组。

int[] a = new int[10];

  这句话初始化了一个长度为10的数组,名字叫a.这个10可以不是常量。下面这样也可以。

int n = 10;
int[] a = new int[n];

两种定义方式:

int[] a;// Java爱好者
int a[];// C语言和C++的爱好者

  大多数Java应用程序员更喜欢第一种,它把类型 int[] 和变量名 a 清晰地区分开。你甚至还可以直接给数组赋值,这个语法甚至不需要new和指定长度。

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

  创建一个数字数组,所有元素初始化为0,boolean 数组元素初始化为 false,对象数组的元素初始化为一个特殊值null。如:

String[] names = new String[10]

创建的names长度为10而且内容为null,要希望包括空串必须自己指定。

for(int i = 0;i < 10; i++) names="";

2.加强型循环

  Java有一种功能很强的循环结构,可以用来处理数组或者其他元素集合中的每个元素,而不必考虑指定下标值。它的语句格式为:
         for (变量 : 集合)
这个变量暂时储存集合中的每一个元素,并执行相应的语句。这个集合必须是一个数组或者实现了 Iterable 接口的类对象(如:ArrayList)

for (int element : a)
	System.out.println(element);

打印数组a的每一个元素,等价于

for (int i = 0; i < a.length; i++)
	System.out.println(a[i]);

  第一个是不是简洁一点呀?但是在很多时候,依旧使用传统的 for 循环:我不想要遍历整个集合,或者我需要数组下标。

提示: 有一个更加简单的方式可以打印数组中的所有值,即利用Arrays类的 toString 方法。调用Arrays.toString(a),返回一个包含数组元素的字符串,这些元素包围在中括号内,并用逗号分隔例如:[1,2,3,4] 只需要调用:System.out.println(Arrays.toString(a));
在这里插入图片描述

3.数组拷贝

  在Java中允许一个数组变量拷贝到另一个数组变量。这时两个变量引用同一个数组:
在这里插入图片描述输出结果和上一张结果一样。如果希望把一个数组的所有值拷贝到另一个新的数组中去,要使用Arrays 类的 copyOf方法:

int[] b = Arrays.copyOf(a,a.length);

第二个参数是新数组的长度,通常是用来增加数组的大小。没有填满的部分,数字被赋予 0,布尔型赋予false。如果小于a.length,就拷贝到原始数组的相应位置。
在这里插入图片描述在这里插入图片描述

4.数组排序

  要想对数值型的数组进行排序,可以使用Arrays类中 sort 方法。这个方法使用了优化的快速排序算法(QuickSort).快排对于大多数集合来说都是效率比较好的。例如:
在这里插入图片描述排序是从小到大的顺序。

猜你喜欢

转载自blog.csdn.net/qq_51294669/article/details/123970223