Files
Java-Book/02:Java语言基础/02.md
T

101 lines
3.6 KiB
Markdown

总的来说,Java的条件判断(if)与选择语法与C一致。这一章我们通过几个例子来说明Java的上述语法,同时对一些Java的特性进行讲解。
## 1. 布尔类型与布尔计算
Java的布尔类型和C保持一致,基本的运算符也和C保持一致。
**注意,布尔类型是 boolean,还有大写的布尔类型Boolean。这两个类型是不同的,小写的是基本类型(与C一致);大写的表示封装类型(类)是面向对象的类型。**
### 1.1. 关系运算
![](img/20230303170551.png)
### 1.2. 逻辑运算
![](img/20230303170617.png)
![](img/20230303170628.png)
![](img/20230303170639.png)
![](img/20230303170647.png)
![](img/20230303170657.png)
### 1.3. 位运算
位运算二进制运算,和C中的位运算是一致的,是指把数字按照二进制的每一位进行运算。
例如:0B 和 0A 代表两个byte,转换成位是:
| 字节1(0x08) | 字节2(0x07) | 说明 |
| --------- | --------- | ------ |
| 0000-1000 | 0000-0111 | 对应的二进制 |
| 位操作 | 对应二进制 | 结果二进制 | 结果16进制 | 说明 |
| ------------ | ------------------- | ---------- | ---------- | ------------------------------ |
| 0x0A & 0x0B | 00001010 & 00001011 | 0000-1010 | 0x0A | 按照每一位对应进行与运算的结果 |
| 0x0A \| 0x0B | 00001010 & 00001011 | 0000-1011 | 0x0B | 按照每一位对应进行或运算的结果 |
**位操作作为了解。**
### 1.4. 选择语句
### 1.5. 运算优先级
**尽量使用括号**
### 1.6. 补充例子
#### 1.6.1. 如何循环的读取输入
这个方式在书上没有讲,在考试中可能会遇到这种情况。
```java
import java.util.Scanner;
/**
* 循环读取,一直到某个特定的条件退出
*
* @author Danny
*
*/
public class LoopRead {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Please input a sequence of integer, divided by space.");
int sum = 0;
while (true) {
if (scanner.hasNextInt()) {
sum += scanner.nextInt();
} else {
break;
}
}
scanner.close();
System.out.println("The sum is: " + sum);
}
}
```
试一试运行该代码,你可以一直用空格分割,来输入多个整数,这时程序并没有任何的回应;当你输入一个非整形的字符,例如‘a’,这时程序退出,并打印刚刚输入整数的累加和。
想一想为什么?重点就在于 `scanner.hasNextInt()` 会一直判断下一个输入是否是整数;如果是整数,就返回真;如果不是整数,就返回假,然后执行break函数。
**可以在if语句前面设置断点,然后使用调试工具进行单步跟踪。你会发现,你输入的时候并不会中断;当敲入回车的时候,调试器才会中断;这证明了Scanner是按照一个回车来一次性的读取输入字符串的;如果没有回车,就会一直等待(这是一个阻塞操作)。**
这个例子很有意思,通过调试过程可以让你更清楚知道Java的每个函数是如何运行的,以及它们都有什么特性。
## 2. 重点
本章的内容中的大部分技术要点都与C保持一致,因此只需要掌握几个例子就可以了:
1. 以下几个例子都比较简单,需要掌握:
1. AdditionQuiz
2. SubtractionQuiz
3. ComputeAndInterpretBMI
4. ComputeTax
5. ChineseZodiac
2. 掌握本页的补充例子,循环读取输入。考试的时候经常会用到。