之前的文章我们介绍了 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
} }
}

Java 从入门到进阶之路(五)的更多相关文章

  1. Java 从入门到进阶之路(十五)

    在之前的文章我们介绍了一下 Java 中的接口,本章我们来看一下 Java 中类的多态. 在日常生活中,很多意思并不是我们想要的意思,如下: 1.领导:“你这是什么意思?” 小明:“没什么意思,意思意 ...

  2. Java 从入门到进阶之路(二十五)

    在之前的文章我们介绍了一下 Java 中的  集合框架中的Collection 的子接口 List的 增删改查和与数组间相互转换的方法,本章我们来看一下 Java 集合框架中的Collection 的 ...

  3. Java 从入门到进阶之路(二十)

    在之前的文章我们介绍了一下 Java 中的包装类,本章我们来看一下 Java 中的日期操作. 在我们日常编程中,日期使我们非常常用的一个操作,比如读写日期,输出日志等,那接下来我们就看一下 Java ...

  4. Java 从入门到进阶之路(一)

    写在前面:从本片文章开始,将记录自己学习 Java 的点滴路程,目标定的并不是让自己成为一个 Java 高手,而是让自己多掌握一门语言,使自己的知识面更广一些,在学习 Java 的过程中如有不对的地方 ...

  5. Java 从入门到进阶之路(二)

    之前的文章我们介绍了一下用 IDEA 编辑器创建一个 Java 项目并输出 HelloWorld,本章我们来看一下 Java 中的变量和基本数据类型. 在这之前我们先来看一下 Java 中的关键字,这 ...

  6. Java 从入门到进阶之路(三)

    之前的文章我们介绍了 Java 中的变量和基本数据类型,本章我们来看一下 Java 的运算符和表达式. 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操 ...

  7. Java 从入门到进阶之路(四)

    之前的文章我们介绍了 Java 的运算符和表达式,本章我们来看一下 Java 的循环结构. 循环是程序设计语言中反复执行某些代码的一种计算机处理过程,是一组相同或相似语句被有规律的重复性进行. 循环的 ...

  8. Java 从入门到进阶之路(六)

    之前的文章我们介绍了 Java 的数组,本章我们来看一下 Java 的对象和类. Java 是一种面向对象语言,那什么是对象呢,对象在编程语言中属于一个很宽泛的概念,我们可以认为万事万物都是对象,每个 ...

  9. Java 从入门到进阶之路(七)

    在之前的文章中我们介绍了一下 java 中的对象和类,接下来我们来看一下 Java 中的方法重载. 在显示生活中,我们肯定会遇到这样一个问题,那就是我们再商场买东西的时候在付账时的选择.如下 A:在收 ...

随机推荐

  1. 异常 Java oop

    1.捕获异常 try——执行可能产生异常的代码 catch——捕获异常 finally——无论是否发生异常,代码总能执行 2.声明异常 throws——声明方法可能要要抛出的各种异常 3.抛出异常—— ...

  2. 前端js性能优化的要点

    1 尽量少使用全局查找,比如全局变量,如果要多次使用,可以将全局变量存为局部变量再使用 eg:function(){ var body=document.body; alert(body): body ...

  3. Downgrade extraction on phones running Android 7/8/9

    Now it's more and more difficult for forensic tools to extract evidence from smartphone running Andr ...

  4. Superset 官方入门教程中文翻译

    本文翻译自 Superset 的官方文档:Toturial - Creating your first dashboard 最新版本的 Superset 界面与功能上与文档中提到的会有些许出入,以实际 ...

  5. Iphone使用过程中遇到的问题

    Q1:同一个Apple ID不同设备之间的通话记录保持同步 解决方法: Step1:"设置"--"电话"--"在其他设备上通话"--选择关闭 ...

  6. log4net服务启动后没有记录日志

    有时候在用log4net的时候,调试或执行是ok的,但是安装服务后没有记录日志. 这是因为服务启动是在C盘启动,而程序放的位置在别的目录. 这时候需要指定读取配置文件的位置为程序所在的目录 strin ...

  7. LeetCode 85. 冗余连接 II

    题目: 在本问题中,有根树指满足以下条件的有向图.该树只有一个根节点,所有其他节点都是该根节点的后继.每一个节点只有一个父节点,除了根节点没有父节点. 输入一个有向图,该图由一个有着N个节点 (节点值 ...

  8. java8(二)方法引用

    方法引用让你可以重复使用现有的方法定义,并像 Lambda 一样进行传递. 方法引用可以被看作仅仅调用特定方法的 Lambda 的一种快捷写法. 事实上,方法引用就是让你根据已有的方法实现来创建 La ...

  9. 【转】linux tar.gz zip 解压缩 压缩命令

    http://apps.hi.baidu.com/share/detail/37384818 download ADT link http://dl.google.com/android/ADT-0. ...

  10. Ubuntu 17 安装Chrome浏览器

    1.进入下载文件存放目录 cd Downloads 2.下载chrome文件 2.1 32位使用如下命令 wget https://dl.google.com/linux/direct/google- ...