Java核心技术卷I基础知识3.10.6 多维数组

简介:

3.10.6 多维数组


多维数组将使用多个下标访问数组元素,它适用于表示表格或更加复杂的排列形式。这一节的内容可以先跳过,等到需要使用这种存储机制时再返回来学习。

假设需要建立一个数值表,用来显示在不同利率下投资$10,000会增长多少,利息每年兑现,而且又被用于投资(见表3-8)。

表3-8 不同利率下的投资增长情况

10%     11%     12%     13%     14%     15%

10 000.00    10 000.00    10 000.00    10 000.00    10 000.00    10 000.00

11 000.00    11 100.00    11 200.00    11 300.00    11 400.00    11 500.00

12 100.00    12 321.00    12 544.00    12 769.00    12 996.00    13 225.00

13 310.00    13 676.31    14 049.28    14 428.97    14 815.44    15 208.75

14 641 00    15 180.70    15 735.19    16 304.74    16 889.60    17 490.06

16 105.10    16 850.58    17 623.42    18 424 .35   19 254.15    20 113.57

17 715.61    18 704.15    19 738.23    20 819.52    21 949.73    23 130.61

19 487.17    20 761.60    22 106.81    23 526.05    25 022.69    26 600.20

21 435.89    23 045.38    24 759.63    26 584.44    28 525.86    30 590.23

23 579.48    25 580.37    27 730.79    30 040.42    32 519.49    35 178.76

 

可以使用一个二维数组(也称为矩阵)存储这些信息。这个数组被命名为balances。

在Java中,声明一个二维数组相当简单。例如:

 

与一维数组一样,在调用new对多维数组进行初始化之前不能使用它。在这里可以这样初始化:

 

另外,如果知道数组元素,就可以不调用new,而直接使用简化的书写形式对多维数组进行初始化。例如:

 

一旦数组被初始化,就可以利用两个方括号访问每个元素,例如,balances[i][j]。

在示例程序中用到了一个存储利率的一维数组interest与一个存储余额的二维数组balances。一维用于表示年,另一维用于表示利率,最初使用初始余额来初始化这个数组的第一行:

 

然后,按照下列方式计算其他行:

 

程序清单3-8给出了完整的程序。

      注释:for each循环语句不能自动处理二维数组的每一个元素。它是按照行,也就是一维数组处理的。要想访问二维数组a的所有元素,需要使用两个嵌套的循环,如下所示:

 

      提示:要想快速地打印一个二维数组的数据元素列表,可以调用:

 

输出格式为:

 

程序清单3-8 CompoundInterest/CompoundInterest.java

 

相关文章
|
9月前
|
监控 Cloud Native Java
Quarkus 云原生Java框架技术详解与实践指南
本文档全面介绍 Quarkus 框架的核心概念、架构特性和实践应用。作为新一代的云原生 Java 框架,Quarkus 旨在为 OpenJDK HotSpot 和 GraalVM 量身定制,显著提升 Java 在容器化环境中的运行效率。本文将深入探讨其响应式编程模型、原生编译能力、扩展机制以及与微服务架构的深度集成,帮助开发者构建高效、轻量的云原生应用。
939 44
|
9月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
790 1
|
10月前
|
安全 Java 编译器
new出来的对象,不一定在堆上?聊聊Java虚拟机的优化技术:逃逸分析
逃逸分析是一种静态程序分析技术,用于判断对象的可见性与生命周期。它帮助即时编译器优化内存使用、降低同步开销。根据对象是否逃逸出方法或线程,分析结果分为未逃逸、方法逃逸和线程逃逸三种。基于分析结果,编译器可进行同步锁消除、标量替换和栈上分配等优化,从而提升程序性能。尽管逃逸分析计算复杂度较高,但其在热点代码中的应用为Java虚拟机带来了显著的优化效果。
315 4
|
10月前
|
Java API Maven
2025 Java 零基础到实战最新技术实操全攻略与学习指南
本教程涵盖Java从零基础到实战的全流程,基于2025年最新技术栈,包括JDK 21、IntelliJ IDEA 2025.1、Spring Boot 3.x、Maven 4及Docker容器化部署,帮助开发者快速掌握现代Java开发技能。
1780 1
|
11月前
|
人工智能 Java
Java多任务编排技术
JDK 5引入Future接口实现异步任务处理,但获取结果不够灵活。Java 8新增CompletableFuture,实现异步任务编排,支持流式处理、多任务组合及异常处理,提升执行效率与代码可读性,简化并发编程复杂度。
252 0
|
10月前
|
Java 测试技术 API
2025 年 Java 开发者必知的最新技术实操指南全览
本指南涵盖Java 21+核心实操,详解虚拟线程、Spring Boot 3.3+GraalVM、Jakarta EE 10+MicroProfile 6微服务开发,并提供现代Java开发最佳实践,助力开发者高效构建高性能应用。
1321 5
|
10月前
|
JavaScript 安全 前端开发
Java开发:最新技术驱动的病人挂号系统实操指南与全流程操作技巧汇总
本文介绍基于Spring Boot 3.x、Vue 3等最新技术构建现代化病人挂号系统,涵盖技术选型、核心功能实现与部署方案,助力开发者快速搭建高效、安全的医疗挂号平台。
451 3
|
9月前
|
安全 Cloud Native Java
Java 模块化系统(JPMS)技术详解与实践指南
本文档全面介绍 Java 平台模块系统(JPMS)的核心概念、架构设计和实践应用。作为 Java 9 引入的最重要特性之一,JPMS 为 Java 应用程序提供了强大的模块化支持,解决了长期存在的 JAR 地狱问题,并改善了应用的安全性和可维护性。本文将深入探讨模块声明、模块路径、访问控制、服务绑定等核心机制,帮助开发者构建更加健壮和可维护的 Java 应用。
833 0
|
11月前
|
存储 Java Linux
操作系统层面视角下 Java IO 的演进路径及核心技术变革解析
本文从操作系统层面深入解析Java IO的演进历程,涵盖BIO、NIO、多路复用器及Netty等核心技术。分析各阶段IO模型的原理、优缺点及系统调用机制,探讨Java如何通过底层优化提升并发性能与数据处理效率,全面呈现IO技术的变革路径与发展趋势。
230 3
|
11月前
|
安全 Java 微服务
Java 最新技术和框架实操:涵盖 JDK 21 新特性与 Spring Security 6.x 安全框架搭建
本文系统整理了Java最新技术与主流框架实操内容,涵盖Java 17+新特性(如模式匹配、文本块、记录类)、Spring Boot 3微服务开发、响应式编程(WebFlux)、容器化部署(Docker+K8s)、测试与CI/CD实践,附完整代码示例和学习资源推荐,助你构建现代Java全栈开发能力。
987 1