A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© FrancisTan 中级黑马   /  2014-7-9 15:06  /  1665 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 FrancisTan 于 2014-7-9 21:48 编辑

字符串有些什么特性?
当被问到这个问题时,我懵了!特性?
纳尼,不是只要知道什么样子的是字符串就行了吗?
好吧,这个只能进一步证明,C#学习一定不能浮躁,
一步一个脚印学扎实才行哪!
好了,哪位大神帮小弟解答一下这个问题?

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

7 个回复

正序浏览
学习了!
回复 使用道具 举报
谢谢各位了!
回复 使用道具 举报
字符串是引用类型,其不能被重新赋值,我们每次对其进行重新赋值的时候其实只是改变了其存在于栈中的地址所指向的堆中的存储空间,其实是又开辟了一块空间的。

评分

参与人数 1技术分 +2 收起 理由
czwanglei + 2

查看全部评分

回复 使用道具 举报
1. 不可变性:由于字符串是不可变的。所以每次修改字符串都是创建一个单独的字符串副本(有拷贝了一个字符串);

2. 字符串池:当程序中有多个相同的字符串常量时,这时,这些字符串都是指向内存中的同一个字符符串,这个特性叫做:字符串池。

之所以字符串池不会造成程序的混乱,是因为:字符串具有不可变性。

3. 字符串留用(不常用,因为会有一定的内存损耗):

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
本帖最后由 许庭洲 于 2014-7-9 16:23 编辑

1. C# 字符串是使用 string 关键字声明的一个字符数组。
2. 字符串是使用引号声明的,如下面的示例所示:
    string s = "Hello, World!";
3.字符串中可以包含转义符,如“\n”(新行)和“\t”(制表符)。
string hello = "Hello\nWorld!";
等同于:
Hello
World!

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
string是不可变字符串,任何操作都是新建一个字符串。效率很低。
一般都是用高效的stringbuffer。
对StringBuffer进行操作,是在原来的对象之上进行改变. 而对String进行操作,是创建新的对象(String的操作都是改变赋值地址而不是改变值操作

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马