首页 > 编程语言 >【老白学 Java】Warship v2.0(一)

【老白学 Java】Warship v2.0(一)

时间:2024-11-27 10:30:38浏览次数:12  
标签:Java Warship 对象 ArrayList v2.0 列表 API 数组

Warship v2.0(一)

码老白
文章来源:《Head First Java》修炼感悟。

上一篇,简版的「Warship」项目终于完工。 从本章开始,老白准备在简版基础上进行升级改造,逐步打造出「Warship v2.0」。 开篇前,老白先介绍一下「数组列表」对象,它是这个项目不可缺少的重要工具。 如果师兄们感兴趣,可以接着往下看。

初识 Java 的「黑科技」

项目开发前,老白先透漏一下 Java 的「黑科技」,因为接下来的开发与它有关。 这就是 API,应用程序编程接口 (Application Programming Interface) 的缩写,它是 Java 预先定义好的函数、方法或类的集合。 API 允许应用程序访问某些功能或数据,而无需关心底层的实现细节。 你可以理解为 API 是开发者编写软件应用的积木。

还记得简版「Warship」中我们写的 GameHelper 类吗? 老白当时说过,不要在意方法如何实现的,只要关注如何调用,返回正确结果就可以了。 你可以使用同样的方式来调用 API 中的各种方法。 稍有不同的是 Java 把这些数量庞大的类都编译好,分别放在不同的包中,我们看不到它们的源代码。

编译源代码时,如果遇到无法解释的类,编译器会首先查找源文件指定的包中是否包含该类。 所以在使用 API 中的类时,需要我们做的仅仅是提供该类所属的包结构,相当于文件目录。 怎么样,Java 提供的这些开发类库是不是很给力?

ArrayList,传统数组的增强版

ArrayList 是 Java 类库中使用频率很高的一个类,与传统数组类似,它提供了更多更好用的方法,可以看做是增强版的数组对象。 那么 ArrayList 和传统数组究竟有什么不同? 且听老白慢慢道来:

  1. 传统数组在创建时就必须确定大小,而 ArrayList 无需指定数组大小,只要创建出此类型对象就可以使用,它的大小会自动进行调整。
  2. 对传统数组赋值时需要指定索引值,而 ArrayList 不但可以指定索引值,也可以自己管理大小,永远不存在超出索引范围的异常。
  3. 传统数组需要使用「方括号+索引」的语法引用某个元素,而 ArrayList 就是一个普通的类对象,使用 . 运算符就可以调用它的方法。
  4. Java1.5 以后的 ArrayList 可以参数化类型,就是只允许保存尖括号 <> 中指定的对象类型或者兼容类型,很大程度确保了类型安全问题。 目前阶段,不需要了解太深,后续 Collection 章节会有专门介绍。

ArrayList 常用方法介绍

由于 API 中的类多达数百个,并且还在不断更新中,仅凭记忆肯定不现实。 建议下载 API 帮助文档,文档中有关于每个类的详细描述,日后也可以随时翻阅。 当查阅某个类时,要注意它在哪个包中,它都可以做什么,以及需要什么参数、返回什么类型的数据等等。

比如上面介绍的 ArrayList,在参考文档中你可以找到一个称为 indexOf() 的方法,我们将会在 Warship 类中使用到它。 但是你所能知道的仅限于该方法需要提供一个对象参数,以及返回一个 int 类型的索引值,而如果指定对象没有出现在数组列表中,只看方法名字我们不知道将会发生什么。 API 帮助文档会列出更多细节供你参考,如果没有找到符合对象该方法会返回 -1。 这就是 API 文档能带给我们的便利,请善用它,或许就是你日后成功的重要工具。

我们来看看 ArrayList 的常用方法:

序号方法名称功能描述
1add(Object elem)向数组列表中添加指定的 elem 对象
2remove(int index)移除 index 索引处的对象
3remove(Object elem)移除指定的 elem 对象
4contains(Object elem)查询数组列表中是否含有 elem 对象,如果包含该对象则返回 true,否则返回 false
5isEmpty()检查是否是空列表,如果是则返回 true,否则返回 false
6indexOf(Object elem)返回 elem 对象的索引值,若不存在该对象返回 -1
7size()返回数组列表中的元素个数
8get(int index)返回 index 索引处的对象

ArrayList 基本操作

在使用 ArrayList 的某个方法时,你无需在意方法是怎样实现的,只要把它当作是你自己实现的方法正常调用就可以。 先看看如何创建数组列表:

ArrayList<Warship> shipList = new ArrayList<Warship>();

这样就声明好了一个数组列表,Warship 表示将来放入这个列表中的数据类型。 如果抛开数据类型的声明,这个过程很像实例化一个普通对象。

看下如何向列表中添加对象:

Warship shipA = new Warship();
shipList.add(shipA);

继续向列表中添加对象:

Warship shipB = new Warship();
shipList.add(shipB);

查询此时列表大小:

int theSize = shipList.size();

查询列表中是否包含某个对象:

boolean isIn = shipList.contains(shipA);

查询某个对象在列表中的位置:

int indexB = shipList.indexOf(shipB);

查询列表是否为空:

boolean isEmpty = shipList.isEmpty();

从列表中删除某个元素,注意,此时列表会自动缩小:

shipList.remove(shipA);

实际上 ArrayList 对象的方法远不止这些,老白只列出了其中最常用的。 如果大家感兴趣可以自己查阅 API 文档,在接下来的开发中我们将会用到这些方法。


《 上一篇 休闲时刻 - 打造 CMD 战舰(五)下一篇 Warship(二)》

标签:Java,Warship,对象,ArrayList,v2.0,列表,API,数组
From: https://blog.csdn.net/liujun_sdn/article/details/143923636

相关文章

  • 12万字 java 面经总结-面试篇
    *基础篇**1**、**Java**语言有哪些特点*1、简单易学、有丰富的类库2、面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高)3、与平台无关性(JVM是Java跨平台使用的根本)4、可靠安全5、支持多线程*2**、面向对象和面向过程的区别**面向过程*:是分析解决问题的步骤,然......
  • java 程序来计算三角形的面积(Program to find area of a triangle)
    给定一个三角形的边,任务是求出该三角形的面积。例如: 输入:a=5,b=7,c=8输出:三角形面积为17.320508输入:a=3,b=4,c=5输出:三角形面积为6.000000方法:可以使用以下公式简单地计算三角形的面积。其中a、b和c是三角形边长, s=(a+b+c)/2 下面是上......
  • 基于java的ssm框架毕业生就业状况管理系统
     博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、爬虫、web开发,已经做了六年的程序开发,开发过上千套大学生实战程序,可以定制、也可成品项目,博客中有上百套程序可供参考,欢迎共同交流学习。......
  • Java学习,重载(Overload)
    Java中,重载(Overload)是指同一个类中,可以有多个方法有相同的名称,但这些方法的参数列表必须不同。参数列表的不同可以体现在参数的个数、参数的类型或者参数的顺序上。重载使得一个类可以以多种方式被调用,提高了代码的灵活性和可读性。方法名称相同:重载的方法必须具有相同的名称......
  • Java学习, 多态
    Java多态是面向对象编程中的一个核心概念,它允许对象在运行时表现出不同的行为。多态性主要通过继承和接口实现,使得一个引用变量在不同情况下可以指向不同类的对象,并调用这些对象的方法。多态的优点消除类型之间的耦合关系可替换性可扩充性接口性灵活性简化性编译时多......
  • 【最新原创毕设】基于Java的面向中职物联网专业教师的课程资源服务平台(免费领源码)可做
    目录摘要1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.2系统流程分析2.2.1系统开发流程2.2.2用户登录流程2.2.3系统操作流程2.2.4添加信息流程2.2.5修改信息流程2.2.6删除信息流程2.3 系统......
  • (分享源码)计算机毕业设计必看必学 上万套实战教程手把手教学JAVA、PHP,node.js,C++、pyth
    摘 要随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去,而其中最好的方式就是建立网络管理系统,并对其进行信息管理。由于现在网络的发达,果园信息统计管理系统的信息通过网络进行信息管理掀起了热潮,所以针对果园信......
  • (分享源码)计算机毕业设计必看必学 上万套实战教程手把手教学JAVA、PHP,node.js,C++、pyth
    摘 要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设物......
  • AVL树详解及Java实现
    (数据结构)AVL详解文章目录(数据结构)AVL详解1.前言思考试验结论分析2.AVL树的相关概念平衡因子AVL树的特点3.二叉搜索树的失衡添加元素造成的失**衡****添加元素失衡的特点**1.LL-右旋转(单旋)2.LR-左旋转后再右旋转(双旋)3.RR-左旋转以及RL-右旋转后再左旋转添加元素......
  • 初识java(1)
    大家好,今天是我们开启java的新篇章,这意味着又是一个新的开始,那么我们就来看看这个编程语言。一.标识符在程序中由用户给类名,方法名或者变量所取的名字。硬性规则:标识符中可以包含字母,数字以及下划线和$符号等等。注意:标识符不能以数字开头,也不能是关键字,且严格区分大小写。......