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

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

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种算法,在后续博客中分别一一讲解……

原文地址:https://www.cnblogs.com/zwwhnly/p/10104024.html

时间: 2024-08-27 05:22:43

Java 从入门到精通(第4版)第6章 数组的相关文章

《Java 从入门到精通(第二版)》 观书有感

笔者今天认真试读了下此书,首先,按照笔者看书的习惯来说,喜欢先看看前面的部分.作者在前言里放了张学习java的路线图,是一个比较标准的学习流程.可是为什么在编程进阶那里放了个设计模式,然后下次才是抽象类与接口,包及访问权限(这名字和java编程思想好熟悉啊),个人认为,设计模式不应该放上来的,可能作者这里的设计模式有其它的含义吧.         全书文字和图像布局都比较合理,看着也挺舒服的.并且发现书还不是一个人写的,不由好几个不同的人共同撰写的.接下来就是目录了,从目录的结构来看,知识点很全

《JAVA 从入门到精通》 - 正式走向JAVA项目开发的路

以前很多时候会开玩笑,说什么,三天学会PHP,七天精通Nodejs,xx天学会xx ... 一般来说,这样子说的多半都带有一点讽刺的意味,我也基本上从不相信什么快速入门.我以前在学校的时候自觉过很多门语言,但基本都只是了解了一个大概,入门肯定也算不上了.顶多也就能吹吹牛,说几个大的概念而已. 公司最近转型,决定抛弃PHP了,我们的出路是:要么H5,要么JAVA,要么走人.纠结了一段时间后,决定还是转JAVA了. 当一个人在自己熟悉的领域的时候,好像说什么都很有自信,都觉得自己是对的.那时候我们的

linux从入门到精通(第2版)下载 &#493590;

下载地址: http://www.gqylpy.com/di/14 <Linux从入门到精通(第2版)>PDF高清完整版-下载 内容简介 编辑 Linux是目前增长最迅速的操作系统.<Linux从入门到精通>由浅入深.循序渐进地向读者介绍Linux的基本使用和系统管理.全书内容包括Linux概述.Linux安装.Linux基本配置.桌面环境基本操作.Shell基本命令.文件和目录管理.软件包管理.磁盘管理.用户与用户组管理.进程管理.网络配置.浏览网页.收发邮件.文件传输和共享.远

Java从入门到精通pdf电子版

Java从入门到精通pdf电子版 链接:https://pan.baidu.com/s/1nzy8LV6d2_qAD3oKS-Fj9Q 提取码:at3x 简介: <Java从入门到精通>从初学者小白角度出发,通过通俗易懂的白话语言.丰富多彩的实战实例,详细介绍了使用Java语言进行程序开发应该掌握的各方面技术和技能,让你在编程开发中越走越远 目录 · · · · · · 第一篇 基础篇 第1章 Java概述 第2章 Java基本语言 第3章 控制流程语句 第4章 数组 第二篇 面向对象 第5章

linux从入门到精通(第2版)pdf高清版免费下载

下载地址:网盘下载 备用地址:网盘下载 内容简介编辑Linux是目前增长最迅速的操作系统.<Linux从入门到精通>由浅入深.循序渐进地向读者介绍Linux的基本使用和系统管理.全书内容包括Linux概述.Linux安装.Linux基本配置.桌面环境基本操作.Shell基本命令.文件和目录管理.软件包管理.磁盘管理.用户与用户组管理.进程管理.网络配置.浏览网页.收发邮件.文件传输和共享.远程登录.多媒体应用.图像浏览和处理.打印机配置.办公软件的使用.Linux编程工具.Shell编程.服务

《Java从入门到精通》第五章学习笔记

第5章 数组 一.一维数组 1.创建 一维数组实质上是一组相同类型数据的集合,在Java中数组不属于数据类型,而是一种对象. 数组的两种声明方式: int[] arr1;int arr2[]; 数组声明之后,在使用之前还需要先分配内存空间: arr1=new int[3];  //数组元素个数为3,即长度为3:arr2=new int[2]; 声明和分配空间也可以一并操作: int arr1[]=new int[3];int arr2[]=new int[2]; 元素赋值的两种方法: arr1[

Java 从入门到精通(第4版)第5章 字符串

开始讲解之前,先列出本章的提纲,如下图所示: 5.1 String类 5.1.1 声明字符串 String str; 5.1.2 创建字符串 String str1 = new String("student"); System.out.println(str1); char a[] = {'s', 't', 'u', 'd', 'e', 'n', 't'}; String str2 = new String(a); System.out.println(str2); char b[]

Java从入门到精通05-抽象类、接口、Final

1.父类方法不能确定时 ,可以用abstract关键字来修饰该方法: 2.当一个类继承的父类是抽象类的话,需要我们把抽象类中的所有抽象方法全部实现: 抽象类的注意事项:1.抽象类不能被实例化:2.抽象类不一定要包含抽象方法,也就是说,抽象类可以没有abstract方法:3.一旦包含类abstract方法,则这个类必须声明为abstract:4.抽象方法不能有主体,如:abstract void aaa(){}: ------------------------------------------

Java从入门到精通12-BorderLayout布局

边界布局管理器把容器的的布局分为五个位置:CENTER.EAST.WEST.NORTH.SOUTH.依次对应为:上北(NORTH).下南(SOUTH).左西(WEST).右东(EAST),中(CENTER),如下图所示. 特征: l  可以把组件放在这五个位置的任意一个,如果未指定位置,则缺省的位置是CENTER. l  南.北位置控件各占据一行,控件宽度将自动布满整行.东.西和中间位置占据一行;若东.西.南.北位置无控件,则中间控件将自动布满整个屏幕.若东.西.南.北位置中无论哪个位置没有控件