2021-06-28


哈工大软件构造阅读心得2-2: Java基础


本文参考:MIT Reading2哈工大学长汉化

枚举类型

有时候一种类型中会存在一个既小又有限的不可变的值的集合,例如:

  1. 一年中的月份: January, February, …, November, December

  2. 一周中的每一天:Monday, Tuesday, …, Saturday, Sunday

  3. 指南针中的方向:north, south, east, west

  4. 可以配出的颜色:black, gray, red, …

当不可变的值的集合满足“小”和“有限”这两个条件时,将这个集合中的所有值统一定义为一个命名常量就是有意义的。

在JAVA中,这样的命名常量就称为enumeration(枚举类型)
并且使用关键字enum来构造。

public enum Month {

JANUARY, FEBRUARY, MARCH, APRIL,

MAY, JUNE, JULY, AUGUST,

SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER;

}
public enum PenColor {

BLACK, GRAY, RED, PINK, ORANGE,

YELLOW, GREEN, CYAN, BLUE, MAGENTA;

}

你可以在声明变量或函数的时候使用例如PenColor这样的枚举类型名:

PenColor drawingColor;

像引用一个被命名的静态常量一样来引用枚举类型的值:

drawingColor = PenColor.RED;

一个枚举型变量更加“类型安全”,因为它可以发现一些类型错误,如类型不匹配:

int month = TUESDAY;

//如果month定义为整型值(TUESDAY也是一个整型值),那么这样写不会报错(但是从语义上看是错的,因为显然不能将“周四”赋值给一个“月份”,这可能不符合作者的本意)
Month month = DayOfWeek.TUESDAY;

// 如果month被定义为枚举类型Month,那么这条语句将会触发静态错误 (static error)

或者拼写错误:

String color = "REd";

// 不报错,拼写错误被忽略
PenColor drawingColor = PenColor.REd;

// 当枚举类型的值被拼写错时,会触发静态错误

Java API 文档

Java API和Java API文档是什么

API:application programming interface,应用程序编程接口。
Java API:Java标准库提供的函数
Java
API文档:详细说明了Java中常用类和方法的功能,开发者可以通过查阅API文档,调用应用程序接口(API)来编程。

怎么使用Java API文档

Java中有很多类,每一个类又有很多方法和变量,通过查看Java
API文档能够知道这些类、方法和变量如何使用。Java官方为Java
SE提供了基于HTML的API文档。作为Java程序员应该熟悉如何使用API文档,如下:
http://docs.oracle.com/javase/8/docs/api/
在这里插入图片描述

类和接口中,接口是斜体文字,类是正常文字。
在这里插入图片描述

以List为例,点击左侧的List正常字体(List类)进入List类介绍:
右侧是List类的具体信息。
在这里插入图片描述

下拉有构造方法:
在这里插入图片描述

继续下拉有实例方法:所有的实例方法汇总,点击某个方法可以跳转到下面的所有方法详细介绍中该方法的介绍。
在这里插入图片描述

练习

读Java文档

阅读Java API文档来回答下列问题:

假设我们有一个 TreasureChest类。在我们运行如下代码之后:

Map\<String, TreasureChest\> treasures = new HashMap\<\>();

treasures.put("beach", new TreasureChest(25));

TreasureChest result = treasures.putIfAbsent("beach", new TreasureChest(75));

注:
default V putIfAbsent(K key, V value)
If the specified key is not already associated with a value (or is mapped to null) associates it with the given value and returns null, else returns the current value.

result变量的值是什么?

[x] 25 treasure

[ ] 75 treasure

[ ] another amount of treasure

[ ] null

Avast!

在运行下面这段代码之后:

Map\<String, String\> translations = new HashMap\<\>();

translations.put("green", "verde");

??? result = translations.replace("green", "verde", "ahdar");

result的值是什么?

注:
default boolean replace(K key, V oldValue, V newValue)
Replaces the entry for the specified key only if currently mapped to the specified value.

[ ] “green”

[ ] “verde”

[ ] “ahdar”

[ ] true

[ ] false

[ ] 1

[ ] null

[x] 以上没有正确答案(注:boolean)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值