字符和字符串
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