String类型是特殊的引用类型

例证:

string peom1 = "Kubla Khan";

string peom2 = "Kubla Khan";

string peom3 = String.Copy(peom2);

Boolean b1 = peom1.Equals(peom2);   //true
Boolean b2 =Object.ReferenceEquals(peom1,peom2);  // true  返回 true 就足以证明string 是引用类型;且string类型是只读的,修改就会新建一个string实例  
Boolean b3 = Object.ReferenceEquals(peom1,peom3); // false

String类型是特殊的引用类型

时间: 2024-12-03 14:16:17

String类型是特殊的引用类型的相关文章

C#中的String类型

C#中的String类型,其实是引用类型,String对象被分配在堆上,而不是栈上.因此,当把一个字符串变量赋予另一个字符串时,会得到对内存中同一个字符串的两个引用.但是,String与引用类型在常见的操作上有一些区别.例如,字符串是不可改变的.修改其中一个字符串,就会创建一个全新的String对象,而另一个字符串不会发生任何变化.如下列代码: string a = "a1"; string b = "b" + a; Console.WriteLine("

浅谈.Net中内置的一种特殊的引用类型 -- String类型

在.Net内置了两种特殊的引用类型 - Object & String 有关C# String类型究竟是值类型还是引用类型,在很多C#学习者中都或多或少造成过困惑. string在内存的表示上是引用(如果有C基础就能很好明白),但在实际使用中,.NET把string弄成了值类型.所以不要把string当引用类型看. .NET中把引用的字符串值类型化的方案是每次对字符串变量赋值,包括字符串相加都是完全开辟新的存储空间给字符串变量使用.所以在使用string类型进行运算时比较消耗资源,此时可以使用s

String类型,Function类型

1.String类型:  1)创建String对象:    var str=new String(s);    String(s);    参数:参数 s 是要存储在 String 对象中的值或转换成原始字符串的值.    返回值:当String()和运算符new一起作为构造函数使用时,它返回一个新创建的String对象,存放的是字符串s          当不用 new 运算符调用String()时,它只把 s 转换成原始的字符串,并返回转换后的值. 2)String对象属性:    leng

C#2 (数值类型及调用、引用类型及调用、装拆箱、常量、变量、数据类型转换、算术运算符、赋值运算符、关系运算符、逻辑运算符、字符串的常用方法)

一.数值类型及其调用原理 名称 说明 所占字节 范围 byte 字节型 1 -27~27-1 short 短整型 2 -215~215-1 int 整型 4 -231~231-1 long 长整型 8 -263~263-1 char 字符型 1 0~65535 float 单精度型 4 ±1.5*10-45~±3.4*1038 double 双精度型 8 ±5.0*10-324~±1.7*10308 bool 布尔型 1 只有true和false两个值 static void Main(stri

第六章 String类型

1 构造String类型 string str1=new string('c',3); //str1="ccc" char[] chs=new char[]{'c','a','t','o','o','n'}; string str2=new string(chs);//str2="catoon"; string str3=new string(chs,0,3);//str3="cat"; 2 String类的字段.属性和索引函数 --String

轻松学习JavaScript十一:JavaScript基本类型(包含类型转换)和引用类型

一值的类型 早在介绍JS的数据类型的时候就提到过基本类型和引用类型,不过在说两种类型之前,我们先来了解一下变量的 值的类型.在ECMAScript中,变量可以存在两种类型的值,即原始值和引用值. (1)原始值 存储在栈中的简单数据段,也就是说,它们的值直接存储在变量访问的位置. (2)引用值 存储在堆中的对象,也就是说,存储在变量处的值是一个指针,指向存储对象的内存处. 为变量赋值时,ECMAScript的解释程序必须判断该值是原始类型,还是引用类型.要实现这一点,解释程序则需 尝试判断该值是否

java内存分配和String类型的深度解析(转)

一.引题 在java语言的所有数据类型中,String类型是比较特殊的一种类型,同时也是面试的时候经常被问到的一个知识点,本文结合java内存分配深度分析 关于String的许多令人迷惑的问题.下面是本文将要涉及到的一些问题,如果读者对这些问题都了如指掌,则可忽略此文. 1.java内存具体指哪块内存?这块内存区域为什么要进行划分?是如何划分的?划分之后每块区域的作用是什么?如何设置各个区域的大小? 2.String类型在执行连接操作时,效率为什么会比StringBuffer或者StringBu

【转】java内存分配和String类型的深度解析

一.引题 在java语言的所有数据类型中,String类型是比较特殊的一种类型,同时也是面试的时候经常被问到的一个知识点,本文结合java内存分配深度分析关于String的许多令人迷惑的问题.下面是本文将要涉及到的一些问题,如果读者对这些问题都了如指掌,则可忽略此文. 1.java内存具体指哪块内存?这块内存区域为什么要进行划分?是如何划分的?划分之后每块区域的作用是什么?如何设置各个区域的大小? 2.String类型在执行连接操作时,效率为什么会比StringBuffer或者StringBui

String类型,==,equal

对于基本数据类型而言: int a = 10; int b = 10; a==b 返回true. 对于引用类型而言: String c = new String("10"); String d = new String("10"); c == d 返回false     c.equals(d)返回true 对于两个对象而言,==比较两个引用的地址是否相同.两个对象的hashCode相同,equal方法返回true. 基本类型是存储在内存中的堆栈(以后简称栈), 而引