首页 技术 正文
技术 2022年11月21日
0 收藏 995 点赞 3,601 浏览 2160 个字

之前的文章我们介绍了 Java 的循环结构,本章我们来看一下 Java 的数组

数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。

数组

  - 相同数据类型的元素组成的集合

  - 元素按线性顺序排列。所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素,除最后一个元素外,每一个元素都有唯一的后继元素(一个跟一个)

  - 可以通过元素所在的位置的顺序号(下标)做标识来访问每一个元素(下标为0开始,最大到元素个数 -1)

创建数组

 public class HelloWorld {
public static void main(String[] args) {
// 第一种:先声明一个数组变量 arr,然后把新创建的数组的引用赋值给变量 arr
int[] arr;
arr = new int[5]; // 第二种:数组变量的声明,和创建数组可以用一条语句完成
int[] arr1 = new int[5];
}
}

贴士:在 IDEA 编辑器下输入fori 然后回车就能生成  for (int i = 0; i < ; i++) { } ,输入 foreach 然后回车就能生成  for (:) { }

在上面的代码中我们声明了数组 arr,但是并没有为其赋值,那么系统将会自动为每个数组元素赋值,默认为 0,我们可以对每个元素赋值,也可以在初始化数组的时候赋值,如下代码:

 public class HelloWorld {
public static void main(String[] args) {
// 声明整型数组变量 arr,
int[] arr = new int[5];
for (int i = 0; i < arr.length; i++) {
// arr 数组默认值为 0
System.out.println(arr[i]); // 0 0 0 0 0
} // 声明整型数组变量 arr1,
int[] arr1 = new int[5];
arr1[0] = 0;
arr1[1] = 1;
arr1[2] = 2;
arr1[3] = 3;
arr1[4] = 4;
for (int i = 0; i < arr1.length; i++) {
// 输出 arr1 数组值
System.out.println(arr1[i]); // 0 1 2 3 4
} // 声明整型数组变量 arr2,arr12 赋值 [0,1,2,3,4]
int[] arr2 = {0, 1, 2, 3, 4};
for (int i = 0; i < arr2.length; i++) {
// 输出 arr2 数组值
System.out.println(arr2[i]); // 0 1 2 3 4
}
}
}

上面的代码我们使用 for 循环输出的数组每一个元素,我们还可以使用 for-each 输出:

 public class HelloWorld {
public static void main(String[] args) {
// 声明整型数组变量 arr,
double[] arr = {0.1, 1.2, 2.3, 3, 4};
for(double i : arr){
System.out.println(i); // 0.1 1.2 2.3 3.0 4.0
}
}
}

我们也可以将一个数组中的元素复制到另一个数组中去,如下:

 public class HelloWorld {
public static void main(String[] args) {
int[] arr1 = {0, 1, 2, 3, 4};
int[] arr2 = new int[5];
/**
* arr1:源数组
* 1:源数组起始下标
* arr2:目标数组
* 0:目标数组的起始下标
* 4:要复制的元素的个数
* */
System.arraycopy(arr1, 1, arr2, 0, 4);
for (int i = 0; i < arr2.length; i++) {
System.out.println(arr2[i]); // 1 2 3 4 5 0
}
}
}

当然复制是不能超范围的,例如我们定义 arr2 的 length 为 3,即  int[] arr2 = new int[3]; ,那么要复制的个数已经超过了目标数组的长度,程序就会报错。

数组的长度在创建后是不可改变的,但是我么可以对其进行扩容,所谓扩容是指创建一个更大的新数组并将其原有数组的内容复制到其中,可以通过  Arrays.copyOf( ) 方法实现。

 public class HelloWorld {
public static void main(String[] args) {
int[] arr1 = {0, 1, 2, 3, 4};
// arr1 源数组 arr1.length+1 扩容数组长度
arr1 = Arrays.copyOf(arr1, arr1.length + 1);
for (int i = 0; i < arr1.length; i++) {
System.out.println(arr1[i]); // 0 1 2 3 4 0
} }
}

当然我们也可以岁原有数组进行减容,只需要把 扩容数组长度 小于源数组即可,那么源数组末尾多出的元素将会被去掉。

java 为我们提供了一种简便的数组排序的方法, Arrays.sort( )

 public class HelloWorld {
public static void main(String[] args) {
int[] arr = {1,4,5,67,23,3};
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]); // 1 3 4 5 23 67
} }
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,085
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,560
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,409
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,182
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,819
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,902