Java学习笔记(四):数组操作
版权声明:本文为博主原创文章,遵循 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学习笔记(四):数组操作相关推荐
- java学习笔记(四)----对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释
***对象作为参数传递*** class passparam { int x; public static void main(String[] args) { passparam obj = ...
- java学习笔记(十三)----IO操作
一.文件的创建 ------------------------------------------------------- File类,表示磁盘上的文件或目录,可对文件或目录进行操作. * 常 ...
- JS学习笔记 (四) 数组进阶
1.基本知识 1.数组是值的有序集合.每个值叫做一个元素,而每个元素在数组中的位置称为索引,以数字表示,以0开始. 2.数组是无类型的.数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的 ...
- Java学习笔记七——数组工具类Arrays
数组工具类Arrays Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组.若将里面的方法用熟的话,那开发效率会大大提高.下面介绍其中的方法. List<T> ...
- Java学习笔记07--日期操作类
一.Date类 在java.util包中定义了Date类,Date类本身使用非常简单,直接输出其实例化对象即可. public class T { public static void main(St ...
- 【Java学习笔记四】Java中的包
包的声明和引入:在Java语言系统中,Java编译器为每一个类生成一个字节码文件(.class),为了对类文件进行分层和按用途分类管理,同时也为了解决相同类名的文件冲突的问题,Java提供了包机制来管 ...
- JAVA学习笔记(四十九)- Swing相关组件
JFrame组件 import java.awt.Color;import javax.swing.JFrame; import javax.swing.JPanel;/** Swing是在AWT基础 ...
- Java学习笔记_数组
数组的概念 是一种容器,可以同时存放多个数据值 数组的特点 数组是一种引用数据类型 数组当中的多个数据,类型必须统一 数组的长度在程序运行期间不可改变 数组的初始化 在内存当中创建一个数组,并且向其中 ...
- java学习笔记之数组
数组是一种效率最高的存储和随机访问对象引用序列的方式,一旦初始化完成,数组长度将不能变,但可以改变其引用,如: int a[]={1,2}; int b[]={1,2,3,4,5}; a=b; 如果输 ...
- Java学习笔记四:static关键字
1.static表示什么? static表示"全局"或者"静态"的意思.在Java中没有全局变量的概念,static 可以简单的理解为全局的,独立的一个功能. ...
最新文章
- mysql 军规_MySQL军规
- java泛型之有界类型
- 2015.7.16(小高开忍住没有减仓,大盘涨3.5%,百股涨停——买进中重、中航,指导WXL错误)...
- windows下增加python的库搜索路径
- LDO和DC-DC的区别
- 时光不老,我们不散!
- CocosCreator内置函数实现物体拖动
- 解决Html5用canvas绘制不出来图片的问题
- 彻底理解正向代理和反向代理
- mybatis缓存二级缓存_MyBatis缓存与Apache Ignite的陷阱
- 使用自己的域名解析CSDN博客
- 高中计算机竞赛教案,信息技术教学案例评比——选择排序的算法实现(金华第一中学)...
- 42Exchange 2010升级到Exchange 2013-证书申请配置
- 狸窝全能视频转换器功能介绍
- Android程序打包安装过程
- 百万级数据量,千万级数据量是多少,海量数据的优化方案
- CTF-综合测试(高难度)【超详细】
- 获取文件夹里图片的所有名称,并在Excel里进行统计
- html5中background什么意思,background
- java object数组转list_java 如何将ListObject[]转换成List实体?