1. 形式上: 字符常量是单引号引起的一个字符;字符串常量是双引号引起的 0 个或若干个字符。
2. 含义上: 字符常量相当于一个整型值( ASCII 值),可以参加表达式运算;字符串常量代表一个地址值(该字符串在内存中存放位置)。因为Java在内存中总是使用Unicode表示字符,所以,一个英文字符和一个中文字符都用一个char类型表示,它们都占用两个字节。要显示一个字符的Unicode编码,只需将char类型直接赋值给int类型即可。
int n1 = 'A'; // 字母“A”的Unicodde编码是65
int n2 = '中'; // 汉字“中”的Unicode编码是20013
还可以直接用转义字符\u+Unicode编码来表示一个字符:
// 注意是十六进制:
char c3 = '\u0041'; // 'A',因为十六进制0041 = 十进制65
char c4 = '\u4e2d'; // '中',因为十六进制4e2d = 十进制20013
3. 占内存大小:字符常量只占 2 个字节;字符串常量占若干个字节 (注意:char 在 Java 中占两个字节)。
4. 字符封装类 Character 有一个成员常量 Character.SIZE 值为 16,单位是bits,该值除以 8(1byte=8bits)后就可以得到 2 个字节。
Java语言要确定每种基本类型所占的存储空间大小。基本类型的大小不会随硬件架构的变化而变化。这种存储空间大小的不变性是Java语言具有可移植性的主要原因之一。