String类型详解

字符串是一个特殊的对象,从api文档的对string声明:public final class{}  中可以看出该类不可以被继承。

以上是对字符串的描述,接下来通过实例展现string的类型的一些用法:

很多人碰到这个问题:String s = "123"; 这里有几个对象。在这里,s为类类型变量,“123”为一个对象。

变量可以指向对象,所有像“123”字符串都是一个对象,同时s也指向了这个对象。

字符串还有一个特点:就是初始化后就不会被改变。但是很多人会误解这个意思。先看个例子:

在一个类中执行以下代码:

String s ="123";

s = "789";

System.out.println(s);    请问打印出来的是什么?是123还是789。很多人以为既然字符串不会被改变,所以

打印出来的应该是123。

错!打印出来的是789,为什么呢?

这个我们上面说的String s = "123"中的对象有关系。首先,“123”这个对象确实不会改变,它一直会在内存中,

s刚开始指向了“123“这个对象,而后来s指向了”789“这个对象,所以才打印出来789.

还有一个关于String的常见问题:

String  s1 = "123";

String  s2 = new String("123");

s1==s2 这个会显示true还是false

s1.equals(s2)显示true还是false

答案是第一个为false,第二个为true

第一个是判断2个对象是否相等,答案肯定是不相等。应为s2 new了一个新的对象。

第二个相等是因为equals是判断2个字符串内容是否相同,所以相等。

最后一个可能会让你模糊的问题:

String s1 = "123";

String s2 = "123";

请问s1==s2会显示true还是false

答案是true。首先,”123“是一个在内存中的对象,它不会被改变。当String s2 = "123"的时候,

由于已经有”123“对象了且不会改变。系统就不会再为”123“在开辟一个空间,而是让s2指向 String s1 = "123"

中的”123“。既然s1 s2都指向了相同的对象,所以相等。


在 C++ 中,string 是一个类,可以用来存储和操作字符串。使用 string 类型需要包含头文件 <string>。 string 类型的特点如下: 1. 可以动态改变字符串的长度。 2. 支持下标访问、迭代器操作和常用的字符串操作函数(如 find、substr 等)。 3. 可以与 C 语言的字符串(即以 '\0' 结尾的字符数组)进行互相转换。 下面是一些常用的 string 类型操作: 1. 初始化字符串: ```cpp string str1 = "hello"; // 直接用字符串初始化 string str2("world"); // 用字符数组初始化 string str3(5, 'a'); // 用字符和长度初始化 ``` 2. 获取字符串长度: ```cpp int len = str.length(); // 获取字符串长度 ``` 3. 字符串拼接: ```cpp string str4 = str1 + str2; // 直接使用加号拼接字符串 str1 += str2; // 使用加等于号拼接字符串 ``` 4. 字符串查找: ```cpp int pos = str.find("world"); // 查找子串,返回第一次出现的位置 ``` 5. 字符串截取: ```cpp string substr = str.substr(pos, len); // 截取子串,从 pos 开始,长度为 len ``` 6. 字符串转换为字符数组: ```cpp const char* cstr = str.c_str(); // 获取指向字符数组的指针 ``` 7. 字符数组转换为字符串: ```cpp string str5 = "hello"; const char* cstr2 = "world"; string str6 = str5 + cstr2; // 直接使用加号拼接字符串和字符数组 string str7(cstr2); // 使用字符数组初始化 ``` 以上是 string 类型的一些常用操作,具体用法还需要根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值