`

JAVA入门教程: 第 五 章 数 组

    博客分类:
  • java
阅读更多
数 组 是 有 序 数 据 的 集 合 ,数 组 中 的 每 个 元 素 具 有 相 同 的 数 据 类 型 ,可 以 用 一 个 统 一 的
数 组 名 和 下 标 来 唯 一 地 确 定 数 组 中 的 元 素 。 数 组 有 一 维 数 组 和 多 维 数 组 ,下 面 我 们 分 别 介
绍 。

§ 5.1 一 维 数 组

一 、 一 维 数 组 的 定 义

一 维 数 组 的 一 、 一 维 数 组 的 定 义

一 维 数 组 的 定 义 方 式 为 :

type arrayName[];

其 中 类 型 (type)可 以 为 Java中 任 意 的 数 据 类 型 ,包 括 简 单 类 型 和 组 合 类 型 (见 2.1),数 组 名
arrayName为 一 个 合 法 的 标 识 符 ,[]指 明 该 变 量 是 一 个 数 组 类 型 变 量 。 例 如 :

int intArray[];

声 明 了 一 个 整 型 数 组 ,数 组 中 的 每 个 元 素 为 整 型 数 据 。 与 C 、 C++不 同 ,Java在 数 组 的 定
义 中 并 不 为 数 组 元 素 分 配 内 存 ,因 此 []中 不 用 指 出 数 组 中 元 素 的 个 数 ,即 数 组 长 度 ,而 且 对 于
如 上 定 义 的 一 个 数 组 是 不 能 访 问 它 的 任 何 元 素 的 。 我 们 必 须 为 它 分 配 内 存 空 间 ,这 时 要 用
到 运 算 符 new,其 格 式 如 下 :

arrayName = new type[arraySize];

其 中 ,arraySize指 明 数 组 的 长 度 。 如 :

intArray = new int[3];

为 一 个 整 型 数 组 分 配 3个 int型 整 数 所 占 据 的 内 存 空 间 。

通 常 ,这 两 部 分 可 以 合 在 一 起 ,格 式 如 下 :

type arrayName = new type [arraySize];

例 如 :

int intArray = new int[3];

二 、 一 维 数 组 元 素 的 引 用

定 义 了 一 个 数 组 ,并 用 运 算 符 new为 它 分 配 了 内 存 空 间 后 ,就 可 以 引 用 数 组 中 的 每 一 个
元 素 了 。 数 组 元 素 的 引 用 方 式 为 :

arrayName[index]

其 中 :index为 数 组 下 标 ,它 可 以 为 整 型 常 数 或 表 达 式 。 如 a[3] ,b[i](i为 整 型 ),c[6*I]等 。 下 标
从 0开 始 ,一 直 到 数 组 的 长 度 减 1。 对 于 上 面 例 子 中 的 in- tArray数 组 来 说 ,它 有 3个 元 素 ,分 别 为 :

intArray[0],intArray[1], intArray[2]。 注 意 :没 有 intArray[3]。

另 外 ,与 C、 C++中 不 同 ,Java对 数 组 元 素 要 进 行 越 界 检 查 以 保 证 安 全 性 。 同 时 ,对 于 每 个
数 组 都 有 一 个 属 性 length指 明 它 的 长 度 ,例 如 :intArray.length指 明 数 组 intArray的 长 度 。

例5.1
public class ArrayTest{
public static void main( String args[] ){
int i;
int a[]=new int[5];
for( i=0; i<5; i++ )
a[i]=i;
for( i=a.length-1; i>=0; i-- )
System.out.println("a["+i+"] = "+a[i]);
}
}
运行结果如下:
C:\>java ArrayTest
a[4] = 4
a[3] = 3
a[2] = 2
a[1] = 1
a[0] = 0

该 程 序 对 数 组 中 的 每 个 元 素 赋 值 ,然 后 按 逆 序 输 出 。

三 、 一 维 数 组 的 初 始 化

对 数 组 元 素 可 以 按 照 上 述 的 例 子 进 行 赋 值 。 也 可 以 在 定 义 数 组 的 同 时 进 行 初 始 化 。
例 如 :

int a[] = {1,2,3,4,5};

用 逗 号 (,)分 隔 数 组 的 各 个 元 素 ,系 统 自 动 为 数 组 分 配 一 定 的 空 间 。

与 C中 不 同 ,这 时 Java不 要 求 数 组 为 静 态 (static)。

四 、 一 维 数 组 程 序 举 例 :

               例5.2 Fibonacci数列

Fibonacci数 列 的 定 义 为 :

F1 = F2 = 1, Fn = Fn-1 + Fn-2 (n>=3)

public class Fibonacci{

public static void main( String args[] ){

int i;

int f[]=new int[10];

f[0]=f[1]=1;

for( i=2; i<10; i++ )

f[i]=f[i-1]+f[i-2];

for( i=1; i<=10; i++ )

System.out.println("F["+i+"]= "+f[i-1]);

}

}

运 行 结 果 为 :

C:\>java Fibonacci

F[1]= 1

F[2]= 1

F[3]= 2

F[4]= 3

F[5]= 5

F[6]= 8

F[7]= 13

F[8]= 21

F[9]= 34

F[10]= 55

例 5.3冒 泡 法 排 序 (从 小 到 大 )

冒 泡 法 排 序 对 相 邻 的 两 个 元 素 进 行 比 较 ,并 把 小 的 元 素 交 换 到 前 面 。

public class BubbleSort{

public static void main( String args[] ){

int i,j;

int intArray[]={30,1,-9,70,25};

int l=intArray.length;

for( i=0; i<l-1; i++)

for( j=i+1; j<l; j++ )

if( intArray[i]>intArray[j] ){

int t=intArray[i];

intArray[i]=intArray[j];

intArray[j]=t;

}

for( i=0; i<l; i++ )

System.out.println(intArray[i]+" ");

}

}

运 行 结 果 为 :

C:\>java BubbleSort

-9

1

25

30

70]@@@

§ 5.2 多 维 数 组

与 C、 C++一 样 ,Java中 多 维 数 组 被 看 作 数 组 的 数 组 。 例 如 二 维 数 组 为 一 个 特 殊 的 一 维
数 组 ,其 每 个 元 素 又 是 一 个 一 维 数 组 。 下 面 我 们 主 要 以 二 维 数 组 为 例 来 进 行 说 明 ,高 维 的
情 况 是 类 似 的 。

一 、 二 维 数 组 的 定 义

二 维 数 组 的 定 义 方 式 为 :

type arrayName[][];

例 如 :

int intArray[][];

与 一 维 数 组 一 样 ,这 时 对 数 组 元 素 也 没 有 分 配 内 存 空 间 ,同 样 要 使 用 运 算 符 new来 分 配
内 存 ,然 后 才 可 以 访 问 每 个 元 素 。

对 高 维 数 组 来 说 ,分 配 内 存 空 间 有 下 面 几 种 方 法 :

1 直 接 为 每 一 维 分 配 空 间 ,如 :

int a[][] = new int[2][3];

2 从 最 高 维 开 始 ,分 别 为 每 一 维 分 配 空 间 ,如 :

int a[][] = new int[2][];

a[0] = new int[3];

a[1] = new int[3];

完 成 1中 相 同 的 功 能 。 这 一 点 与 C、 C++是 不 同 的 ,在 C、 C++中 必 须 一 次 指 明 每 一 维 的
长 度 。

二 、 二 维 数 组 元 素 的 引 用

对 二 维 数 组 中 每 个 元 素 ,引 用 方 式 为 :arrayName[index1][index2]

其 中 index1、 index2为 下 标 ,可 为 整 型 常 数 或 表 达 式 ,如 a[2][3]等 。 同 样 ,每 一 维 的 下 标 都 从
0开 始 。

三 、 二 维 数 组 的 初 始 化

有 两 种 方 式 :

1 直 接 对 每 个 元 素 进 行 赋 值 。

2 在 定 义 数 组 的 同 时 进 行 初 始 化 。

如 :int a[][]={{2,3},{1,5},{3,4}};

定 义 了 一 个 3× 2的 数 组 ,并 对 每 个 元 素 赋 值 。

四 、 二 维 数 组 举 例 :

例 5.4 矩 阵 相 乘

两 个 矩 阵 Am× n、 Bn× l相 乘 得 到 Cm× l,每 个 元 素 Cij =  aik*bk j (i=1..m,n=1..n)

public class MatrixMultiply{
public static void main( String args[] ){
int i,j,k;
int a[][]=new int[2][3];
int b[][]={ {1,5,2,8},{5,9,10,-3},{2,7,-5,-18} };
int c[][]=new int[2][4];
for( i=0; i<2; i++ )
for( j=0; j<3; j++ )
a[i][j]=(i+1)*(j+2);
for( i=0; i<2; i++ ){
for( j=0; j<4; j++ ){
c[i][j]=0;
for( k=0; k<3; k++ )
c[i][j]+=a[i][k]*b[k][j];
}
}
System.out.println("\n*** Matrix A ***");
for( i=0; i<2; i++ ){
for( j=0; j<3; j++ )
System.out.print(a[i][j]+" ");
System.out.println();
}
System.out.println("\n*** Matrix B ***");
for( i=0; i<3; i++ ){
for( j=0; j<4; j++ )
System.out.print(b[i][j]+" ");
System.out.println();
}
System.out.println("\n*** Matrix C ***");
for( i=0; i<2; i++ ){
for( j=0; j<4; j++ )
System.out.print(c[i][j]+" ");
System.out.println();
}
}
}
其结果为:
C:\>java MatrixMultiply
*** Matrix A ***
2 3 4
4 6 8
*** Matrix B ***
1 5 2 8
5 9 10 -3
2 7 -5 -18
*** Matrix C ***
25 65 14 -65
50 130 28 -130 (未完待续)
分享到:
评论

相关推荐

    Java语言基础教程:第一章概述 PPT

    本教程的第一章将对Java语言进行概览,帮助初学者建立坚实的基础。 一、Java语言的特性 1. 面向对象:Java是一种面向对象的语言,支持类、对象、继承、封装和多态等概念,使得代码结构清晰,易于维护。 2. 可移植性...

    java入门教程java入门教程

    在这个"java入门教程java入门教程"中,我们主要关注的是JavaScript的学习资源。 教程中的章节结构覆盖了JavaScript的基础到进阶知识,非常适合初学者进行系统学习: 1. **第1章 JavaScript语言概述**:这一章通常...

    Java语言程序设计:第四章 继承与多态.ppt

    在第四章“继承与多态”中,我们深入探讨了这两个主题。 首先,继承允许一个类(子类)从另一个类(父类)继承特性,这样子类就可以重用父类的方法和属性,而无需重新编写。例如,在提供的内容中,`Employee`类被...

    java基础入门教程

    第 一 章 Java概 述 § 1.1 Java语 言 出 现 的 背景 、 影 响 及 应 用 前 景 一 、 背 景 最 近 一 年 多 来 ,在 Internet上 出 现 的 特 别 吸 引 人 的 事 件 就是 Ja va语 言 和 用 Java编 写 的 浏 览 器...

    Java基础入门教程 第2章 java语言基础(共52页).ppt

    Java语言基础是学习Java编程的重要阶段,本教程的第二章主要涵盖了以下几个核心知识点: 1. **Java语言的历史和运行机制**:Java正式发行于1995年5月23日,由Sun Microsystems公司推出。Java语言的核心特性是“一次...

    java 基础入门学习教程

    ### Java基础入门学习教程知识点概览 #### 第1章:Java语言概述 ##### 1.1 Java语言的产生 - **起源**:Java语言由Sun Microsystems公司于1995年发布,最初由James Gosling领导开发。 - **背景**:Java的设计目标...

    完整版java基础入门教程由浅入深讲解 Java语言编程基础 第01章 java编程简介(共32页).ppt

    通过这套完整的Java基础入门教程,学习者能够掌握Java编程的基本技能,为进一步深入学习Java高级特性和框架打下坚实基础。同时,教程中的实践案例和示例代码有助于提高编程能力,帮助读者在实践中巩固理论知识。

    完整版 Java基础教程 Java入门教程 Java语言程序设计 第5章 方法定义及调用(共20页).ppt

    Java编程语言的基础知识涵盖了许多方面,其中方法定义和调用是核心概念之一。方法是Java中实现特定功能的代码块,它可以被重复使用,提高了代码的可读性和可维护性。下面我们将深入探讨方法的定义、分类、调用以及...

    JAVA 经典入门教程

    这个经典的Java入门教程覆盖了从基础到进阶的关键知识点,为初学者提供了全面的学习路径,帮助他们迈入Java编程的大门。通过深入学习和实践,可以逐步掌握Java编程技巧,为更高级的应用开发打下坚实基础。

    Java基础入门教程 第6章 集合框架(共28页).ppt

    在《Java基础入门教程 第6章 集合框架》中,我们将深入探讨这个重要的话题。 首先,让我们从集合框架的基本组件开始。集合框架包含三个主要部分:接口、算法和实现。接口如`Collection`、`List`、`Set`和`Map`定义...

    Java基础入门自学课件 第11章 包-package(共17页).ppt

    Java基础入门自学课件 第11章 包-package Java基础入门自学课件第11章讲解了Java编程语言中的包机制,包括如何导出jar包和如何导入jar包。下面是该课件的详细知识点总结: 一、Java中的包机制 Java中的包机制是指...

    JAVA大学教程(第五版)[10]

    ### JAVA大学教程(第五版)[10]:面向对象编程:多态性 #### 10.1 引言:多态性 多态性(Polymorphism)是面向对象编程中的一个核心概念,它允许程序员以通用的方式处理不同类型的对象。通过多态,可以将基类的对象...

    java语言的详细入门教程

    ### Java语言的详细入门教程 #### 1.1 Java语言的发展 ##### 1.1.1 Java语言的产生 Java语言起源于1990年代初的Sun Microsystems,由James Gosling领导的一个团队研发而成。最初,这项计划的目标是开发一种新型的...

    Java开发实战从入门到精通视频教程下载第4章 数组与方法.zip

    在本Java开发实战从入门到精通的视频教程中,第4章主要讲解了数组与方法这两个核心概念。数组是Java编程语言中基本的数据结构,它允许我们存储一组相同类型的元素。而方法则是组织代码、实现功能的基本单元,使得...

    完整版精品java课件 Java基础入门教程 Java程序设计 第11章 图形用户界面2(共31页).ppt

    Java图形用户界面(GUI)设计是Java编程中的一个重要组成部分,它允许开发者创建交互式的应用程序,提供友好的用户交互体验。在第11章中,主要涵盖了以下几个核心知识点: 1. **GUI概念**:GUI(Graphical User ...

    完整版精品java课件 Java基础入门教程 Java程序设计 第1章 Java语言概述(共38页).ppt

    - **常用类**:如数组、字符串、异常处理等,这些都是Java编程中的常用工具。 - **输入输出**:包括文件操作和I/O流,用于程序的数据交换。 - **数据库编程**:学习如何使用JDBC(Java Database Connectivity)与...

    完整版精品java课件 Java基础入门教程 Java程序设计 第5章 继承和接口(共47页).ppt

    【Java基础入门教程 - 继承和接口】 在Java编程中,继承和接口是面向对象编程的重要概念,它们使得代码的复用和扩展变得更加高效。本篇内容将深入讲解这两个核心概念。 首先,我们来看一下类的继承。继承是Java中...

Global site tag (gtag.js) - Google Analytics