1. 深入学习类型 String
String 类型是 Java 中使用最频繁的类型之一,甚至可以说是最常用的。它非常强大,因为这种变量可以保存文本。此外,与 int 和 double 不同,String 对象自带很多方法,借助它们可以做各种有趣的事情。
此外,Java 中的所有对象(真的所有)都可以被转换为 String。或者更准确地说,Java 中的每个对象都能返回其文本(字符串)表示形式。我们以后还会多次回到这个类型(它既有用又有趣),但今天先从它的基础开始。
创建 String 类型的变量
String 类型用于存储字符串(文本)。要在代码中创建一个能保存文本的变量,可以使用如下语句:
String name;
其中 name 是变量名。
示例:
| 命令 | 说明 |
|---|---|
|
创建字符串变量 name |
|
创建字符串变量 message |
|
创建字符串变量 text |
与 int 和 double 一样,也可以使用简写一次创建多个 String 变量:
String name1, name2, name3;
2. 给 String 变量赋值
要给 String 变量赋一个值,写法如下:
name = "值";
这里与之前学过的类型有一个重要区别。所有 String 类型的值都是文本字符串,必须用双引号括起来。
示例:
| 命令 | 备注 |
|---|---|
|
变量 name 包含文本 Anya |
|
变量 city 包含文本 New York |
|
变量 message 包含文本 Hello! |
3. 初始化 String 变量
与 int 和 double 一样,String 变量也可以在创建时立即初始化。事实上,Java 中所有类型都可以这样做,所以我们之后就不再赘述了。
String name1 = "值1", name2 = "值2", name3 = "值3";
String name = "Anya", city = "New York", message = "Hello!";
只有已赋值的变量才能使用/修改
如果只声明了变量但未赋值就尝试使用,Java 编译器会报错。
下面的代码无法通过编译:
String name;
System.out.println(name); // 变量 name 未初始化。程序无法编译。
int a;
a++; // 变量 a 未初始化。程序无法编译。
double x;
double y = x; // 变量 x 未初始化。程序无法编译。
4. 连接(拼接)字符串
在 Java 中有一件既有趣又简单的事情:可以把字符串拼接起来。这种操作称为 连接(concatenation)。也常被称为“拼接字符串”或直接“字符串相加”。
要把两条字符串拼接起来,需要使用符号 +。非常简单:
"字符串1" + "字符串2"
示例:
| 命令 | 备注 |
|---|---|
|
name 包含字符串 AnyaAnya |
|
city 包含字符串 New YorkAnya |
|
message 包含字符串 Hello! Anya |
当然,你也可以一次拼接很多字符串,还可以把字符串和变量一起拼接。
String name = "Anya"; // name 包含字符串 Anya
String city = "New York"; // city 包含字符串 New York
String message = "Hello!" + city + name + city; // message 包含字符串 Hello!New YorkAnyaNew York
5. 空字符串
在上一个示例中可以看到,变量 message 里的文本可读性不佳,因为缺少空格。要添加一个或多个空格,只需在代码中直接写出它们并用双引号包起来。这比你想象的更简单:
" "
另外,如果引号之间什么都不写(两个双引号连在一起),就会得到所谓的“空字符串”:
""
一方面它确实“存在”,另一方面把它输出到屏幕时什么也看不到。与其他字符串拼接时也不会产生变化。它就像数字中的零,但用于字符串。
6. 在字符串中转义特殊字符
你已经知道,字符串由双引号包裹。那么如果需要在字符串里包含引号怎么办?如果我们在字符串中直接写引号,编译器不会把它当成字符串的结束吗?
没错,会的。因此,字符串内部的引号要用一对字符 \" 来表示。代码会是这样:
String quote = "他说:\"您好!\"";
System.out.println(quote); // 他说:"您好!"
其实还要再精细一点。符号 \ 在字符串内部被视为特殊(控制)字符。借助它可以表示各种“不可见字符”,比如换行、制表符等。而要表示符号 \ 本身,需要写 2 次。
以下是最常用的 4 个组合:
| 写法 | 含义 |
|---|---|
| \n | 换行(newline) |
| \t | 制表符(缩进) |
| \\ | 字面量 \ |
| \" | 字符串内部的引号 |
示例:
String multiline = "第1行\n第2行";
System.out.println(multiline);
输出:
第1行
第2行
7. 字符串的内置方法
String 类型有很多自带的方法(也称为“函数”或“方法”)。这些方法非常多,能够极大地方便开发。今天你将认识其中一些(最简单的)。例如:
| 方法 | 说明 | 结果示例 |
|---|---|---|
|
字符串长度 | |
|
转为大写 | |
|
转为小写 | |
|
去掉两端空格 | |
使用字符串方法的示例
这些方法的调用方式如下:变量.函数(...)。
确定字符串的长度:
String name = "Andrey";
int length = name.length();
System.out.println(length); // 6,因为有 6 个字母
将字符串转换为大写或小写:
String original = "hello";
System.out.println(original.toUpperCase()); // HELLO
System.out.println(original.toLowerCase()); // hello
去掉两端空格(从键盘输入时非常有用):
String messy = " hello ";
System.out.println(messy.trim()); // "hello"
每个这样的方法都会返回一个新的字符串,原有字符串本身不会改变。
GO TO FULL VERSION