字符和字符串
约 637 字大约 2 分钟
2024-08-09
字符类型
字符类型 char 是基本数据类型,它是 character 的缩写。一个 char 保存一个 Unicode 字符
char c1 = 'A';
char c2 = '中';因为 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字符串类型
和 char 类型不同,字符串类型 String 是引用类型,我们用双引号 "..." 表示字符串。一个字符串可以存储 0 个到任意个字符
String s = ""; // 空字符串,包含0个字符
String s1 = "A"; // 包含一个字符
String s2 = "ABC"; // 包含3个字符
String s3 = "中文 ABC"; // 包含6个字符,其中有一个空格字符串连接
Java 的编译器对字符串做了特殊照顾,可以使用 + 连接任意字符串和其他数据类型,这样极大地方便了字符串的处理
public static void main(String[] args) {
String s1 = "Hello";
String s2 = "world";
String s = s1 + " " + s2 + "!";
System.out.println(s);
}如果用 + 连接字符串和其他数据类型,会将其他数据类型先自动转型为字符串,再连接
public static void main(String[] args) {
int age = 25;
String s = "age is " + age;
System.out.println(s);
}多行字符串
如果我们要表示多行字符串,使用 + 号连接会非常不方便
String s = "first line \n"
+ "second line \n"
+ "end";不可变特性
Java 的字符串除了是一个引用类型外,还有个重要特点,就是字符串不可变
public static void main(String[] args) {
String s = "hello";
System.out.println(s); // 显示 hello
s = "world";
System.out.println(s); // 显示 world
}变的不是字符串,而是变量 s 的"指向"
空值null
String s1 = null; // s1是null
String s2; // 没有赋初值值,s2也是null
String s3 = s1; // s3也是null
String s4 = ""; // s4指向空字符串,不是null注意要区分空值 null 和空字符串 "",空字符串是一个有效的字符串对象,它不等于 null