String特点及常用方法
字符串的特性:不可变性和"暂存池"(常量池)的特性
通过案例了解字符串中的方法.
如何比较两个对象是不是同一个对象的最准确的方法ReferenceEquals
-------------------------------------------------
不可变性:str 被赋值后 内存地址是不一样的。
只是字符串的值是常量值时,就指向暂存池中的对象。
string s1="1",s2="2",s3="3";
string str="123";//指向暂存池中的对象。
stirng s=s1+s2+s3; //不是指向暂存池中的对象。
此时 str!=s;
字符串:变量名指向 暂存池中的对象。
------------------------------------------------
比较两个对象是否为同一个对象:地址是否相同
课件中讲解Equals和"=="两种方式比较两个对象是不是同一个对象已经不准确了,因为都可以被重写.
只有通过object的ReferenceEquals方法才更加的准确
因为Equals可以被重写,所以比较不准确。
比较两个对象是否为同一个对象,什么是同一个对象?(地址)
如何判断str1与str2是否为同一个对象?
Equals和== Equals已经不可靠了。"=="也不靠谱了。
String类的==运算符,内部调用的也是Equals("=="运算符重载后也是调用的 EqualsHelper()来判断的,与Equals(string)方法一样。只是比较值是否相等)
为什么字符串的Equals和别的不一样?
string的Equals方法判断的是字符串的内容是否相同(重写了Object中的Equals方法。)
查看判断两个对象是否相同要用:object.ReferenceEquals();
即时窗口中:*p1 获得地址
同一个对象判断使用:object.ReferenceEquals(s1,s2);最准确判断同一个对象。