java从入门到精通(第4版)第6章数组

zwwhnly      2022-04-23     424

关键词:

开始讲解之前,先列出本章的提纲,如下图所示:

技术分享图片

6.1 数组概述

数组是具有相同数据类型的一组数据的集合。

数组中的每个元素具有相同的数据类型。

可根据数组的维数将数组分为一维数组、二维数组……

6.2 一维数组的创建及使用

6.2.1 创建一维数组

1.先声明,再用new运算符进行内存分配

int arr[];
arr = new int[5];

2.声明的同时为数组分配内存

int month[] = new int[12]; 

说明:使用new关键字为数组分配内存时,整型数组中各个元素的初始值都为0。

6.2.2 初始化一维数组

int arr[] = new int[]{1, 2, 3, 5, 25};
int arr2[] = {34, 23, 12, 6};

6.2.3 使用一维数组

int day[] = new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
for (int i = 0; i < 12; i++) {
    System.out.println((i + 1) + "月有" + day[i] + "天");
}

 输出结果如下图所示:

技术分享图片

6.3 二维数组的创建及使用

6.3.1 二维数组的创建

1.先声明,再用new运算符进行内存分配

int myArr[][];
myArr = new int[2][4];
int myArr[][] = new int[2][];
myArr[0] = new int[4];
myArr[1] = new int[4];

2.声明的同时为数组分配内存

int myArr[][] = new int[2][4];

6.3.2 二维数组初始化

int myArr[][] = {{12, 0}, {45, 10}};

初始化二维数组后,要明确数组的下标都是从0开始的,例如,上面的代码中myArr[1][1]的值是10,赋值语句为:myArr[1][1] = 20;

6.3.3 使用二维数组

int a[][] = new int[3][4];
for (int i = 0; i < a.length; i++) {
    for (int j = 0; j < a[i].length; j++) {
        System.out.print(a[i][j]);
    }
    System.out.println();
}

输出结果如下图所示:

技术分享图片

 说明:对于整型二维数组,创建成功之后系统会赋给数组中每个元素初始值为0。

6.4 数组的基本操作

6.4.1 遍历数组

int b[][] = new int[][]{{1}, {2, 3}, {4, 5, 6}};
for (int k = 0; k < b.length; k++) {
    for (int c = 0; c < b[k].length; c++) {
        System.out.print(b[k][c]);
    }
    System.out.println();
}

输出结果如下图所示:

技术分享图片

int arr[][] = {{4, 3}, {1, 2}};
System.out.println("数组中的元素是:");
int i = 0;
for (int x[] : arr) {
    i++;
    int j = 0;
    for (int e : x) {
        j++;
        if (i == arr.length && j == x.length) {
           System.out.print(e);
        } else {
           System.out.print(e + "、");
        }
      }
}

输出结果如下图所示:

技术分享图片

6.4.2 填充替换数组元素 

int arr[] = new int[5];
Arrays.fill(arr, 8);
for (int i = 0; i < arr.length; i++) {
    System.out.println("第" + i + "个元素是:" + arr[i]);
}

输出结果如下图所示:

技术分享图片

fill方法还提供了一个重载,可以指定填充的范围从索引fromIndex(包括)一直到索引toIndex(不包括),如果fromIndex == toIndex,则填充范围为空。

int arr[] = new int[]{45, 12, 2, 10};
Arrays.fill(arr, 1, 2, 8);
for (int i = 0; i < arr.length; i++) {
     System.out.println("第" + i + "个元素是:" + arr[i]);
}

输出结果如下图所示:

技术分享图片

注意:如果指定的索引位置大于或者等于要进行填充的数组的长度,则会报出ArrayIndexOutOfBoundsException(数组越界)异常。 

技术分享图片

6.4.3 对数组进行排序

int arr[] = new int[]{23, 42, 12, 8};
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

 输出结果如下图所示:

技术分享图片

6.4.4 复制数组

int arr[] = new int[]{23, 42, 12};
int newArr[] = Arrays.copyOf(arr, 5);
for (int i = 0; i < newArr.length; i++) {
     System.out.println(newArr[i]);
}

输出结果如下图所示:

技术分享图片

int arr[] = new int[]{23, 42, 12, 84, 10};
int newArr[] = Arrays.copyOfRange(arr, 0, 3);
for (int i = 0; i < newArr.length; i++) {
     System.out.println(newArr[i]);
}

输出结果如下图所示:

技术分享图片

6.4.5 数组查询

int arr[] = new int[]{4, 25, 10};
Arrays.sort(arr);
int index = Arrays.binarySearch(arr, 0, 1, 8);

System.out.println(index); // 输出-2
int arr[] = new int[]{1, 8, 9, 4, 5};
Arrays.sort(arr);
int index = Arrays.binarySearch(arr, 4);

System.out.println(index); // 输出1
String str[] = new String[]{"ab", "cd", "ef", "yz"};
Arrays.sort(str);
int index = Arrays.binarySearch(str, 0, 2, "cd");

System.out.println(index); // 输出1

关于6.5节,数组排序的3种算法,在后续博客中分别一一讲解……

 

入门到精通❤️「java工程师全栈知识路线」

...务管理】第5章Spring企业级程序设计•【第5章SpringMVC快速入门】第6章Spring企业级程序设计•【第6章深入SpringMVC开发】第7章Spring企业级程序设计•【第7章Spring框架整合】第8章Spring企业级程序设计•【第8章综合项目开发进阶】Java... 查看详情

暑假第五周总结(2018.8.6-8.12)

...了高数第5章《面对对象程序设计》9.10章阅读完成《Java从入门到精通(第3版)》读了7.8章完成面向对象的实验任务7.8英语单词背诵了200词左右练习了java的编程看了4节网课总结:  学习时间:14h左右     &nbs... 查看详情

2018年java架构师分布式性能优化附带源码

下载地址:百度网盘下载教程内容:第1章STL实用入门教程第2章C++编码规范第3章GDIGDI+从入门到精通第4章COM实用入门教程第5章Windows窗口高级编程第6章Boost深入剖析之使用技巧第7章VC++实战调试技巧第8章静态库与动态库编程第9章... 查看详情

html5从入门到精通的内容介绍

参考技术A《HTML5从入门到精通》系统、全面地讲解了HTML语言及其最新版本HTML5的新功能与新特性,技术新颖实用。目录  第1篇HTML基础  第1章HTML基础3  教学录像:22分钟  1.1HTML的基本概念4  1.2HTML发展史4  1.3HTML的... 查看详情

计算机网络原理精讲视频教程从入门到精通(共105讲)

独家首发计算机网络原理精讲视频教程从入门到精通(共105讲)课程目标:理解数据通信的过程和TCP、IP协议的工作过程。从计算机网络的物理层数据链路层网络层传输层应用层逐一给大家讲解。对计算机通信的机制做彻底剖析。... 查看详情

暑假第六周总结(2018.8.13-8.19)

...高数第6章《面对对象程序设计》11.12章阅读完成《Java从入门到精通(第3版)》读了9.10章英语单词背诵练习了java的编程看了4节网课总结:  学习时间:13h左右      打代码时间:4.5h左右   &nbs... 查看详情

docker从入门到实战应用(代码片段)

第1章概念第2章基础操作-镜像第3章基础操作-容器第4章容器的修改及保存第5章容器进阶操作第6章Dockerfile第1章概念什么是沙箱机制#1、沙箱是一个虚拟系统程序,沙箱提供的环境相对于每一个运行的程序都是独立的,而且不会对... 查看详情

java从入门到精通第五版答案位置,讲的太透彻了

一、公务员都不要35岁以上的,何况大公司这让很多人感到惶恐,现在职场上有一种现象:很多用人单位会在招聘信息上明确标注,年龄需在35岁以下。为什么有经验、有人脉的职场中年人会如此遭“嫌弃”呢࿱... 查看详情

清华大学出版社《c语言从入门到精通实例版》和《c语言从入门到精通》内容上有啥区别?

...中总结编程经验,后者则强调编程原理的理解《C语言从入门到精通》以零基础讲解为宗旨,用实例引导读者深入学习,采取“基础知识→核心技术→趣味题解→项目实战”的讲解模式,深入浅出地讲解C语言的各项技术及实战技... 查看详情

java入门到精通-第38讲-线程-坦克大战6

 应用程序在内存中开辟空间-进程; 内存-大脑容量;   反应切换的速度-CPU; 试图去尝试别的进程的地址空间---病毒; 线程是由进程(应用程序)创建的;涉及到并发,就会涉及到线程;迅雷下载;&nb... 查看详情

新编html网页设计从入门到精通(龙马工作室)pdf扫描版?

新编html网页设计从入门到精通共分为21章,全面系统地讲解了html的发展历史及4.0版的新特性、基本概念、设计原则、文件结构、文件属性标记、用格式标记进行页面排版、使用图像装饰页面、超链接的使用、使用表格组织页面... 查看详情

暑假第四周总结(2018.7.30——8.5)

...高数第4章《面对对象程序设计》七八章阅读完成《Java从入门到精通(第3版)》读了5.6章完成面向对象的实验任务5.6英语单词背诵中总结:  学习时间:15h左右      打代码时间:4h     ... 查看详情

java入门到精通-第36讲-事件监听-坦克大战4

Java事件处理机制: 事件源;事件;事件监听者;事件处理方法; 任何一个类,只要实现了相应的接口,就可以去监听某个事件源;一个类要实现监听的基本步骤: a.实现相应的接口[KeyListener,MouseListener,ActionListener... 查看详情

java入门到精通-第40讲-线程

 把思想转换成程序。  线程对象只能启动一个线程; 导入导出项目:1,copy 2,装到磁盘3,导入:import---General---ExistingProjectintoWorkspace 4,浏览Brose-Copyprojectintoworkspace 把项目拷贝到Eclipse中, 不选的话,直... 查看详情

java入门到精通-第77讲-满汉楼系统4-菜单

setBorder(BorderFactory.createLoweredBevelBorder()) 设置下凹的感觉; (左上角的横坐标,纵坐标,密码框的宽,密码框高)拆分布局:菜单---toolbar---Grid布局JPanelp1JPanel p4包含两个JPanel p2、p3p2---缩进;p3---右边显示;卡片布局... 查看详情

java入门到精通-第84讲-网络基础

QQ后台界面(服务器界面):可以对用户管理强制有人下线豪华版:腾讯公司im项目,即时通讯项目;后台“启动服务器”服务器架设在公网上,是可以实现网络聊天的;----------------------普通版:服务器上有真正的IP地址;通过... 查看详情

tkinterdesigner从入门到精通视频教程

...!欢迎使用TKinterDesigner!以下是《TKinterDesigner从入门到精通》哔哩哔哩视频教程第一讲:《TKinterDesigner从入门到精通》第一讲第二讲:《TKinterDesigner从入门到精通》第二讲第三讲:《TKinterDesigner从入门到精通... 查看详情

tkinterdesigner从入门到精通视频教程

...!欢迎使用TKinterDesigner!以下是《TKinterDesigner从入门到精通》哔哩哔哩视频教程第一讲:《TKinterDesigner从入门到精通》第一讲第二讲:《TKinterDesigner从入门到精通》第二讲第三讲:《TKinterDesigner从入门到精通... 查看详情