Java学习笔记(四):数组操作

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

绪言

最近开始学习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: 如果觉得本篇本章对您有所帮助,欢迎关注、评论、赞!

利用 TensorFlow 训练自己的目标识别器。本文内容来自于我的毕业设计,基于 TensorFlow 1.15.0,其他 TensorFlow 版本运行可能存在问题。.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值