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

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

数组

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

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

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

创建数组

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

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

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

  1. public class HelloWorld {
  2. public static void main(String[] args) {
  3. // 声明整型数组变量 arr,
  4. int[] arr = new int[5];
  5. for (int i = 0; i < arr.length; i++) {
  6. // arr 数组默认值为 0
  7. System.out.println(arr[i]); // 0 0 0 0 0
  8. }
  9.  
  10. // 声明整型数组变量 arr1,
  11. int[] arr1 = new int[5];
  12. arr1[0] = 0;
  13. arr1[1] = 1;
  14. arr1[2] = 2;
  15. arr1[3] = 3;
  16. arr1[4] = 4;
  17. for (int i = 0; i < arr1.length; i++) {
  18. // 输出 arr1 数组值
  19. System.out.println(arr1[i]); // 0 1 2 3 4
  20. }
  21.  
  22. // 声明整型数组变量 arr2,arr12 赋值 [0,1,2,3,4]
  23. int[] arr2 = {0, 1, 2, 3, 4};
  24. for (int i = 0; i < arr2.length; i++) {
  25. // 输出 arr2 数组值
  26. System.out.println(arr2[i]); // 0 1 2 3 4
  27. }
  28. }
  29. }

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

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

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

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

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

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

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

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

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

  1. public class HelloWorld {
  2. public static void main(String[] args) {
  3. int[] arr = {1,4,5,67,23,3};
  4. Arrays.sort(arr);
  5. for (int i = 0; i < arr.length; i++) {
  6. System.out.println(arr[i]); // 1 3 4 5 23 67
  7. }
  8.  
  9. }
  10. }

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. bean的创建(五)第五部分 属性填充

    AbstractAutowireCapableBeanFactory.populateBean protected void populateBean(String beanName, RootBea ...

  2. 1.4.2python网站地图爬虫(每天一更)

    # -*- coding: utf-8 -*- ''' Created on 2019年5月6日 @author: 薛卫卫 ''' import urllib.request import re de ...

  3. 百度网盘 人工智能书籍【Tensorflow和深度学习】

    链接:https://pan.baidu.com/s/1ejCvwn08ILI2fMhBEdXR8w 提取码:6pk9

  4. 代码生成java连接数据库的所需代码(超详细)

    开始学习: round 1:(一开始学习当然还是要一步一步学习的啦,哪有什么一步登天!!!) a.准备工作:1.eclipse,mysql(这两个软件肯定要的啦,不然学什么把它们连接起来) 2.加载驱 ...

  5. CEPH 自动化测试用例介绍

    1.QA 的内部逻辑关系. 首先用一个图表示一下QA的内部的逻辑关系. 2.QA的脚本介绍 3.QA脚本运行

  6. 并发编程(3)——ThreadPoolExecutor

    ThreadPoolExecutor 1. ctl(control state) 线程池控制状态,包含两个概念字段:workerCount(线程有效数量)和runState(表示是否在运行.关闭等状态 ...

  7. 一文速览Vue全栈

    一文速览Vue全栈 原创: 新哥Lewis 天道酬勤Lewis 7月7日 Vue 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用,专注于声明式渲染视图 ...

  8. charles(version4.2.1)抓包手机数据

    点击菜单栏的Proxy项,选择Proxy Settings. 设置HTTP Proxy的Port. 勾选透明代理Enable transparent HTTP proxying,也可不勾选. 设置代理 ...

  9. poj 1286 polya定理

    Necklace of Beads Description Beads of red, blue or green colors are connected together into a circu ...

  10. 纯数据结构Java实现(0/11)(开篇)

    为嘛要写 本来按照我的风格,其实很不喜欢去写这些细节的东西,因为笔记上直接带过了. 本来按照我的风格,如果要写,那也是直接上来就干,根本不解释这些大纲,参考依据. 本来按照我的风格,不想太显山露水,但 ...