第3章 Java的基本程序设计结构
Java
没有方法可以直接查看类型或变量的大小。
整型¶
类型 | 大小 |
---|---|
byte | 1字节 |
short | 2字节 |
int | 4字节 |
long | 8字节 |
- 没有无符号整型。通常使用
Byte.toUnsignedInt(b)
将一个有符号的byte
类型b
转换成无符号的int
,以及Integer.toUnsignedLong(i);
来将一个有符号的int
类型i
转换成无符号的long
。 - 类型的大小与机器无关(
java
是跨平台的)。
char类型¶
char
类型占用2
字节。- 可以用
\u
加上4
个十六进制表示一个char
。 - 有些
Unicode
可以用一个char
值描述(2字节),有些需要两个char
值(4字节)。
Unicode和char类型¶
-
码点(codepoint)
就是一个编码表中某个字符对应的代码值。java
使用Unicode
编码机制。前缀U+
来表示一个Unicode
字符,例如U+0041
就是'A'
的码点。 -
java
使用UTF-16
来表示字符,这种编码方式使用2
个字节来表示大多数常用字符,对于其他不太常用的字符使用使用4
个字节表示。 -
每
2
个字节称为一个代码单元
(code unit) ,在java
中,char
类型描述了UTF-16
编码中的一个代码单元。对于大多数字符,char
可以直接表示,但某些字符需要两个char
才能表示。因此,不建议在程序中使用char
类型。
boolean类型¶
- 在
java
中零值不能解析为false
,例如整数的0
,对象的null
等。
字符串¶
java
中的字符串是 String
类型,是 Unicode
字符序列。
.substring(l, r)
方法返回一个 \([l, r)\) 的子串。String
不支持原地修改。字符串变量的复制实质是共享同一段字符串。- 不要使用
==
检测两个字符串相等,这只能检测两个字符串变量是否共享同一段。如果要检测两个字符串的内容是否相等,要用.equals()
方法。String
中还有一个.compareTo()
方法类似于C语言
中的strcmp()
函数。 - 新建一个字符串是
null
,null
表示没有引用任何对象,并不是空串的意思。检测空串可以用.length() == 0
或者.equals("")
。 -
.length()
返回代码单元(char
)的数量,.codePointCount(l, r)
可以返回 \([l, r)\) 的码点(Unicode
) 的数量。对于可能存在4
字节的码点的字符串,遍历时需要注意。 -
StringBuild
和StringBuffer
是支持原地修改的字符串。其中,StringBuild
速度更快,但不是线程安全的。StringBuffer
是线程安全的。
日期与时间¶
对于新的代码,应该使用 java.time
包来表示时间点。旧的代码可能会使用 Date
类来表示时间点。
数组¶
- 将一个数组变量赋给另一个数组变量,实质是引用相同的数组对象。也就是
浅拷贝
。深拷贝
要用Arrays.copyOf()
方法。 java
的多维数组支持“不规则”,并不要求每一行都有相同的列数。
最后更新:
2023-10-05
创建日期: 2023-10-05
创建日期: 2023-10-05