第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