版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://mp.csdn.net/mdeditor/100728414

目录

  • 绪言
  • 遍历数组
    • for循环
    • for each循环
    • 打印数组内容
  • 数组排序
    • 冒泡排序
    • Arrays.sort()
  • 多维数组
    • 二维数组
    • 三维数组
  • Xmind
  • 参考资料

绪言

最近开始学习Java,主要教材是廖雪峰老师的Java教程。为了巩固学习的成果,并作为以后查阅的参考,我计划写一系列学习笔记。
这是本系列的第四篇 – 数组操作。

本节的内容是数组的操作,包括:
遍历;
排序。
多维数组的概念。

遍历数组

遍历数组有两种方法,for循环和for each循环。

for循环

举个栗子:

public class Main {public static void main(String[] args) {int[] ns = { 1, 4, 9, 16, 25 };for (int i=0; i<ns.length; i++) {int n = ns[i];System.out.println(n);}}
}

结果:

1
4
9
16
25

for each循环

举个栗子:

public class Main {public static void main(String[] args) {int[] ns = { 1, 4, 9, 16, 25 };for (int n : ns) {System.out.println(n);}}
}

结果:

1
4
9
16
25

打印数组内容

直接打印数组变量,得到的是数组在JVM中的引用地址:

import java.util.Arrays;public class Main {public static void main(String[] args) {int[] ns = {1, 4, 9, 16, 25};System.out.println(ns);}
}

结果:

[I@279f2327

希望打印的数组的元素内容,可以使用Arrays.toString():

import java.util.Arrays;public class Main {public static void main(String[] args) {int[] ns = {1, 4, 9, 16, 25};System.out.println(Arrays.toString(ns));}
}

结果:

[1, 4, 9, 16, 25]

数组排序

对数组进行排序是程序中非常基本的需求。常用的排序算法有冒泡排序、插入排序和快速排序等。

冒泡排序

举个栗子:

import java.util.Arrays;public class Main {public static void main(String[] args) {int[] ns = { 28, 12, 89, 73, 65, 18, 96, 50, 8, 36 };// 排序前:System.out.println(Arrays.toString(ns));for (int i = 0; i < ns.length - 1; i++) {for (int j = 0; j < ns.length - i - 1; j++) {if (ns[j] > ns[j+1]) {// 交换ns[j]和ns[j+1]:int tmp = ns[j];ns[j] = ns[j+1];ns[j+1] = tmp;}}}// 排序后:System.out.println(Arrays.toString(ns));}
}

结果:

[28, 12, 89, 73, 65, 18, 96, 50, 8, 36]
[8, 12, 18, 28, 36, 50, 65, 73, 89, 96]

冒泡排序的特点是,每一轮循环后,最大的一个数被交换到末尾,因此,下一轮循环就可以“刨除”最后的数,每一轮循环都比上一轮循环的结束位置靠前一位。

Arrays.sort()

Java的标准库内置了排序功能,我们只需要调用JDK提供的Arrays.sort()就可以排序:

import java.util.Arrays;public class Main {public static void main(String[] args) {int[] ns = { 28, 12, 89, 73, 65, 18, 96, 50, 8, 36 };Arrays.sort(ns);System.out.println(Arrays.toString(ns));}
}

结果:

[28, 12, 89, 73, 65, 18, 96, 50, 8, 36]
[8, 12, 18, 28, 36, 50, 65, 73, 89, 96]

多维数组

二维数组

先看一下二维数组的定义:

public class Main {public static void main(String[] args) {int[][] ns = {{ 1, 2, 3, 4 },{ 5, 6, 7, 8 },{ 9, 10, 11, 12 }};System.out.println(ns.length);}
}

结果:

3

要打印一个二维数组,可以使用两层嵌套的for循环:

import java.util.Arrays;public class Main {public static void main(String[] args) {int[][] ns = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};for (int[] arr : ns) {for (int n : arr) {System.out.print(n);System.out.print(",");}System.out.println();}}
}

结果:

1,2,3,
4,5,6,
7,8,9,

使用Java标准库的Arrays.deepToString()也可以打印二维数组:

import java.util.Arrays;public class Main {public static void main(String[] args) {int[][] ns = {{ 1, 2, 3, 4 },{ 5, 6, 7, 8 },{ 9, 10, 11, 12 }};System.out.println(Arrays.deepToString(ns));}
}

结果:

[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

三维数组

先定义一个三维数组:

int[][][] ns = {{{1, 2, 3},{4, 5, 6},{7, 8, 9}},{{10, 11},{12, 13}},{{14, 15, 16},{17, 18}}
};

访问三维数组的某个元素,可以用ns[2][0][1],得到15。

理论上,我们可以定义任意的N维数组。但在实际应用中,除了二维数组在某些时候还能用得上,更高维度的数组很少使用。

Xmind

最后,放上这一节的思维导图:

参考资料

数组操作 – 廖雪峰的官方网站

PS: 如果觉得本篇本章对您有所帮助,欢迎关注、评论、赞!

Java学习笔记(四):数组操作相关推荐

  1. java学习笔记(四)----对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释

    ***对象作为参数传递*** class passparam { int x;   public static void main(String[] args)   { passparam obj = ...

  2. java学习笔记(十三)----IO操作

    一.文件的创建 ------------------------------------------------------- File类,表示磁盘上的文件或目录,可对文件或目录进行操作.   * 常 ...

  3. JS学习笔记 (四) 数组进阶

    1.基本知识 1.数组是值的有序集合.每个值叫做一个元素,而每个元素在数组中的位置称为索引,以数字表示,以0开始. 2.数组是无类型的.数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的 ...

  4. Java学习笔记七——数组工具类Arrays

    数组工具类Arrays Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组.若将里面的方法用熟的话,那开发效率会大大提高.下面介绍其中的方法. List<T> ...

  5. Java学习笔记07--日期操作类

    一.Date类 在java.util包中定义了Date类,Date类本身使用非常简单,直接输出其实例化对象即可. public class T { public static void main(St ...

  6. 【Java学习笔记四】Java中的包

    包的声明和引入:在Java语言系统中,Java编译器为每一个类生成一个字节码文件(.class),为了对类文件进行分层和按用途分类管理,同时也为了解决相同类名的文件冲突的问题,Java提供了包机制来管 ...

  7. JAVA学习笔记(四十九)- Swing相关组件

    JFrame组件 import java.awt.Color;import javax.swing.JFrame; import javax.swing.JPanel;/** Swing是在AWT基础 ...

  8. Java学习笔记_数组

    数组的概念 是一种容器,可以同时存放多个数据值 数组的特点 数组是一种引用数据类型 数组当中的多个数据,类型必须统一 数组的长度在程序运行期间不可改变 数组的初始化 在内存当中创建一个数组,并且向其中 ...

  9. java学习笔记之数组

    数组是一种效率最高的存储和随机访问对象引用序列的方式,一旦初始化完成,数组长度将不能变,但可以改变其引用,如: int a[]={1,2}; int b[]={1,2,3,4,5}; a=b; 如果输 ...

  10. Java学习笔记四:static关键字

    1.static表示什么? static表示"全局"或者"静态"的意思.在Java中没有全局变量的概念,static 可以简单的理解为全局的,独立的一个功能. ...

最新文章

  1. mysql 军规_MySQL军规
  2. java泛型之有界类型
  3. 2015.7.16(小高开忍住没有减仓,大盘涨3.5%,百股涨停——买进中重、中航,指导WXL错误)...
  4. windows下增加python的库搜索路径
  5. LDO和DC-DC的区别
  6. 时光不老,我们不散!
  7. CocosCreator内置函数实现物体拖动
  8. 解决Html5用canvas绘制不出来图片的问题
  9. 彻底理解正向代理和反向代理
  10. mybatis缓存二级缓存_MyBatis缓存与Apache Ignite的陷阱
  11. 使用自己的域名解析CSDN博客
  12. 高中计算机竞赛教案,信息技术教学案例评比——选择排序的算法实现(金华第一中学)...
  13. 42Exchange 2010升级到Exchange 2013-证书申请配置
  14. 狸窝全能视频转换器功能介绍
  15. Android程序打包安装过程
  16. 百万级数据量,千万级数据量是多少,海量数据的优化方案
  17. CTF-综合测试(高难度)【超详细】
  18. 获取文件夹里图片的所有名称,并在Excel里进行统计
  19. html5中background什么意思,background
  20. java object数组转list_java 如何将ListObject[]转换成List实体?

热门文章

  1. 【Shader】基于图像的光照(Image Based Lighting,IBL)
  2. 陈潭:大数据战略实施的实践逻辑与行动框架
  3. Android 基础知识系列之 Intent 常用方法
  4. Linux 将普通用户改成root用户
  5. Linux操作系统——切换到root用户及其他用户
  6. 内盘外盘新手看热闹,老手在内盘外盘看门道
  7. TIA博途如何从DB数据块生成源文件或者源文件生成DB数据块?
  8. 计算机电路基础知识点,《计算机电路基础(1)》课教学经验点滴论文.doc
  9. 【微信小程序】车位在线销售平台(三)
  10. web前端介绍_html-超文本标记语言