Java: Language: Basic

21st January 2021 at 10:43pm

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 进制
  • 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
  • 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,注意 bytechar,他们虽然常用来表示字符,但是本质上也是个整型
  • 枚举类型
  • String (JDK 7 开始支持)
  • 一些包裹基础类型的特殊类,如 Character, Byte, ShortInteger

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。

参考: