Data Types
Java 的数据类型分为:
- Primitive:基础类型,比如 int,它的长度(取值范围)在不同平台一致
- Non-primitive:非基础类型,比如 Array,String
Primitive 包含:byte, short, int, long, float, double, char, boolean。
byte v.s. char:
- byte: 8-bit signed two's complement integer, [-128, 127]
- char: a single 16-bit Unicode Character (UTF-16), default '\u0000', maximum value '\uffff' (65536)
Literals:
- Integer:
- in decimal,
16
- in hexadecimal,
0x1a
- in binary,
0b11010
- 没有 8 进制
- in decimal,
- Float-point:
E/e
for scientific notation,D/d
for double,F/f
for float- usally,
123.4
- in scientific notation,
1.234e2
- in float,
123.4f
- usally,
- Char and string:
'Z'
,"BeginnersBook"
未初始化的变量,如果是基础类型(primitive)的,有默认值 0;非基础类型是 null
。
Java 没有类似 C/C++/Java 的 trusy value,比如:
int i = 1;
if (1) { ... }
l = [1]
if l:
pass
Java 则不允许上述的情况,它需要显式地构造出 if (i == 1)
, if (!l.empty())
。下面这样会抛 null exception:
Object o = null;
if (o) {}
Operators
Java 的操作符跟 C/C++ 没有什么区别。这里不描述。
Control Flows
if-else
跟 C/C++ 没有区别。
switch-case
中,你可以用这些类似作为判断值用:
- 整型:
byte
,char
,short
,int
,注意byte
跟char
,他们虽然常用来表示字符,但是本质上也是个整型 - 枚举类型
- String (JDK 7 开始支持)
- 一些包裹基础类型的特殊类,如
Character
,Byte
,Short
和Integer
for
循环,比起 C/C++ 基本一样,Java 还有一个 enhanced for-loop,类似于 for each 语句:
for (String element : array) {
System.out.println("Element: " + element);
}
array
应该是个 iterator。自定义的类也可以通过类似机制来实现。
while
do-while
循环跟 C/C++ 没什么区别。
此外配合 for
/ while
循环使用的 continue
, break
,后面可以接个 label。
参考: