Skip to content

Commit

Permalink
final
Browse files Browse the repository at this point in the history
  • Loading branch information
itwanger committed Jun 4, 2024
1 parent 4d0b918 commit f59e273
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 22 deletions.
14 changes: 12 additions & 2 deletions docs/basic-grammar/flow-control.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: Java流程控制语句详解:带你轻松学会各类控制结构
title: Java流程控制语句详解:带你轻松学会if switch while for
shortTitle: Java流程控制语句
category:
- Java核心
Expand Down Expand Up @@ -198,7 +198,12 @@ if (age >= 20) {

### 02、switch 语句

switch 语句用来判断变量与多个值之间的相等性。变量的类型可以是 byte、short、int 或者 char,或者对应的包装器类型 Byte、Short、Integer、Character,以及[字符串](https://javabetter.cn/string/immutable.html)[枚举](https://javabetter.cn/basic-extra-meal/enum.html)类型。
switch 语句用来判断变量与多个值之间的相等性。变量的类型可以是:

- byte、short、char、int:基本整数类型。
- String:[字符串](https://javabetter.cn/string/immutable.html)类型。
- 枚举类型:自定义的[枚举](https://javabetter.cn/basic-extra-meal/enum.html)类型。
- 包装类:如 Byte、Short、Character、Integer。

来看一下 switch 语句的格式:

Expand Down Expand Up @@ -321,6 +326,11 @@ public class SwitchEnumDemo {
篮球运动员詹姆斯
```

但 switch 不支持 long、float、double 类型,这是因为:

- long 是 64 位整数,不在 switch 一开始设计的范围内(32 位的 int 在大多数情况下就够用了)。
- float 和 double 是浮点数,浮点数的比较不如整数简单和直接,存在精度误差。

### 03、for 循环

![](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/control/thirteen-07.png)
Expand Down
29 changes: 9 additions & 20 deletions docs/sidebar/csnotes/javase.md
Original file line number Diff line number Diff line change
Expand Up @@ -390,9 +390,9 @@ public class PassByValueExample {

### float 与 double

Java 不能隐式执行向下转型,因为这会使得精度降低
Java 不能隐式向下转型,因为这会使精度降低

1.1 字面量属于 double 类型,不能直接将 1.1 直接赋值给 float 变量,因为这是向下转型。
`1.1` 字面量属于 double 类型,不能直接将 `1.1` 赋值给 float 变量,因为这是向下转型。

```java
// float f = 1.1;
Expand Down Expand Up @@ -426,7 +426,7 @@ s1++;
s1 = (short) (s1 + 1);
```

[StackOverflow : Why don't Java's +=, -=, *=, /= compound assignment operators require casting?](https://stackoverflow.com/questions/8710619/why-dont-javas-compound-assignment-operators-require-casting)
推荐阅读:[自动类型转换与强制类型转换](https://javabetter.cn/basic-grammar/type-cast.html)

### switch

Expand All @@ -444,28 +444,17 @@ switch (s) {
}
```

switch 不支持 long、float、double,是因为 switch 的设计初衷是对那些只有少数几个值的类型进行等值判断,如果值过于复杂,那么还是用 if 比较合适。
推荐阅读:[switch 语句的介绍](https://javabetter.cn/basic-grammar/flow-control.html#_02%E3%80%81switch-%E8%AF%AD%E5%8F%A5)

```java
// long x = 111;
// switch (x) { // Incompatible types. Found: 'long', required: 'char, byte, short, int, Character, Byte, Short, Integer, String, or an enum'
// case 111:
// System.out.println(111);
// break;
// case 222:
// System.out.println(222);
// break;
// }
```

[StackOverflow : Why can't your switch statement data type be long, Java?](https://stackoverflow.com/questions/2676210/why-cant-your-switch-statement-data-type-be-long-java)
> 微信搜索《**沉默王二**》或者微信扫下面的二维码,关注后回复《**java**》即可获取最新的 PDF 版本。
![手机端可以长按识别](https://cdn.tobebetterjavaer.com/tobebetterjavaer/images/gongzhonghao.png)

## 四、关键字

### final

**1. 数据**
#### 1. 数据

声明数据为常量,可以是编译时常量,也可以是在运行时被初始化后不能被改变的常量。

Expand All @@ -479,13 +468,13 @@ final A y = new A();
y.a = 1;
```

**2. 方法**
#### 2. 方法

声明方法不能被子类重写。

private 方法隐式地被指定为 final,如果在子类中定义的方法和基类中的一个 private 方法签名相同,此时子类的方法不是重写基类方法,而是在子类中定义了一个新的方法。

**3. 类**
#### 3. 类

声明类不允许被继承。

Expand Down

0 comments on commit f59e273

Please sign in to comment.