1. 字符串基础概念与核心特性
字符串(string)是编程中最基础也最重要的数据类型之一,几乎所有编程语言都内置了对字符串的支持。从本质上讲,字符串是由零个或多个字符组成的有限序列,可以包含字母、数字、符号和空格等任何字符。
1.1 字符串的不可变性
大多数现代编程语言(如Java、Python、C#)中的字符串都是不可变(immutable)的。这意味着一旦字符串对象被创建,它的值就不能被改变。任何看似修改字符串的操作,实际上都是创建了一个新的字符串对象。
java复制String str = "hello";
str = str + " world"; // 实际上是创建了新对象
不可变性带来的优势:
- 线程安全:多个线程可以同时读取字符串而无需同步
- 哈希缓存:字符串的哈希值只需计算一次
- 安全性:防止敏感数据被意外修改
- 字符串池优化:可以重用相同的字符串实例
1.2 字符串的编码与存储
字符串在内存中的表示涉及字符编码问题。常见的编码方式包括:
- ASCII:7位编码,只能表示128个字符
- Unicode:国际标准,为世界上大多数文字系统提供唯一编码
- UTF-8:可变长度Unicode编码,兼容ASCII
- UTF-16:固定16位编码
重要提示:在处理文件I/O或网络通信时,务必明确指定字符编码,否则可能导致乱码问题。
1.3 字符串的常见操作
字符串支持的基本操作通常包括:
-
连接(Concatenation):将多个字符串合并
python复制s = "Hello" + " " + "World" -
切片(Slicing):获取子字符串
javascript复制let str = "abcdef"; let sub = str.substring(1, 3); // "bc" -
查找(Searching):查找子字符串位置
csharp复制string s = "hello world"; int index = s.IndexOf("world"); // 6 -
替换(Replacement):替换部分内容
python复制s = "Hello World".replace("World", "Python") -
分割(Splitting):按分隔符分割字符串
java复制String[] parts = "a,b,c".split(",");
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 不同编程语言中的字符串实现
2.1 Java中的字符串
Java中的字符串是java.lang.String类的对象,具有以下特点:
- 不可变(immutable)设计
- 字符串常量池优化
- 丰富的API方法
java复制// 字符串创建的两种方式
String str1 = "hello"; // 使用字符串常量池
String str2 = new String("hello"); // 显式创建新对象
// 常用方法
int length = str1.length();
boolean isEmpty = str1.isEmpty();
char c = str1.charAt(0);
String upper = str1.toUpperCase();
2.2 C++中的字符串
C++通过std::string类提供字符串支持,与C风格字符串(char数组)相比更安全方便。
cpp复制#include <string>
using namespace std;
string s1 = "hello";
string s
