社区
C#
帖子详情
String类型比较的问题
pn_nl
2006-06-08 05:17:15
String first = "hehe";
String second = "hehe";
if(f1==s1)
Console.WriteLine("相等");
else
Console.WriteLine("不相等");
这个执行结果是相等,我有些不理解,我知道String已经创建就是不变的
但是我还是不理解为什么上面的结果是相等,String类型不是引用类型么?
...全文
282
20
打赏
收藏
String类型比较的问题
String first = "hehe"; String second = "hehe"; if(f1==s1) Console.WriteLine("相等"); else Console.WriteLine("不相等"); 这个执行结果是相等,我有些不理解,我知道String已经创建就是不变的 但是我还是不理解为什么上面的结果是相等,String类型不是引用类型么?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yzb1982719
2006-06-09
打赏
举报
回复
String first = new String("hehe");
String second =new String("hehe");
first和second就肯定不一样了
这样写无法通过啊,
但是String first = "hehe";
String second = "hehe";
if(f1==s1)
Console.WriteLine("相等");
else
Console.WriteLine("不相等");
肯定相等.你的定义类型一样,不过是变量名不一样,能不等吗,
fishmin
2006-06-09
打赏
举报
回复
.NET框架程序设计一书中讲到过,应该是字符串驻留技术,有多个相同string对象出现时,cls优化处理了,实质上是同一对象,所以==是返回true的!
pn_nl
2006-06-09
打赏
举报
回复
字符串等同/比较方法
可以通过许多方法比较两个字符串。对于等同和不等同比较,主要差别当然在于,是比较引用(两个字符串指向同一对象)还是比较值(两个字符串包含相同的字符)。
对于等同比较和关系比较,另一个主要差别在于,是使用当前环境的排序顺序,还是使用字符串中各个字符的原始序号值。(还有一个较小的差别,即比较时是否区分大小写。)比较的默认设置是使用它们所在线程的当前环境并区分大小写。通常,此设置就是您需要的设置。
== 运算符调用 String.Equals,后者将执行区分环境和大小写的比较。如果您希望使用 C# 比较引用,可以将两个字符串引用都强制转换为 Object,或者使用 Object.ReferenceEquals。
xqlez
2006-06-09
打赏
举报
回复
尽管 string 是引用类型,但定义相等运算符(== 和 !=)是为了比较 string 对象(而不是引用)的值。这使得对字符串相等性的测试更为直观。
个人觉得比较字符串的值用的比较多
thoughter
2006-06-09
打赏
举报
回复
pn_nl(2006年,两个目标,一定要实现!!) ( ) 信誉:100 2006-06-09 09:55:00 得分: 0
如果比较值的话,用Equals方法就好了,为什么要重写==???
个人感觉还是更习惯使用==来比较...
hatita
2006-06-09
打赏
举报
回复
比较String的引用意义不大!
String first = "hehe";
String second = "hehe";
我可以肯定的告诉你,这两个字符串的引用也是一样的,听说过字符串池没?
pn_nl
2006-06-09
打赏
举报
回复
如果比较值的话,用Equals方法就好了,为什么要重写==???
pn_nl
2006-06-09
打赏
举报
回复
但是如果我想比较引用,那怎么办啊?
重写这些运算符,感觉就是画蛇添足
diandian82
2006-06-08
打赏
举报
回复
这是特殊的引用,比较string比较的是内容
runrunrun
2006-06-08
打赏
举报
回复
不好意思,不是说 kssys 。 CSDN刷新有问题
runrunrun
2006-06-08
打赏
举报
回复
to 楼上, 应该你去试试
kssys
2006-06-08
打赏
举报
回复
因为String类重写了==/!=/+...等运算符,使它符合值类型的特性。
事实上,这是一件好事。
amandag
2006-06-08
打赏
举报
回复
hehe,是想成Java了
sorry,楼主
pn_nl
2006-06-08
打赏
举报
回复
To:runrunrun
没看清楚,你的那个结果是对的
pn_nl
2006-06-08
打赏
举报
回复
To:runrunrun
自己去试试啊,看结果是什么?
pn_nl
2006-06-08
打赏
举报
回复
To:amandag(高歌)
如果在java里,你的结果是对的,呵呵
runrunrun
2006-06-08
打赏
举报
回复
因为string 重载了 == , 就不光是引用比较了。
char[] tmp={'h','e','h','e'};
char[] tmp2={'h','e','h','e'};
object first = new String(tmp);
object second = new String(tmp2);
if(first==second)
应该是不相等
pn_nl
2006-06-08
打赏
举报
回复
楼上的自己写一下,String类哪有那样的构造函数啊?????
char[] tmp={'h','e','h','e'};
char[] tmp2={'h','e','h','e'};
String first = new String(tmp);
String second = new String(tmp2);
if(first==second)
Console.WriteLine("相等");
else
Console.WriteLine("不相等");
即使是这样写,结果仍然是相等,为啥???
amandag
2006-06-08
打赏
举报
回复
first和second指向了在内存中的同一个常量字符串"hehe"
如果你是
String first = new String("hehe");
String second =new String("hehe");
first和second就肯定不一样了
lovvver
2006-06-08
打赏
举报
回复
string是引用类型,也有值类型的特征.
C++
string
类型
(入门基础)
C++
string
类型
用
string
对象处理字符串 用字符数组处理字符串时,常常会发生数组越界的
问题
。因此C++标准模板库中设计了“
string
”数据
类型
,专门处理字符串。
string
类型
的变量就是专门用来处理字符串 的,也叫“
string
”对象。
string
类型
并不是C++语言的基本数据
类型
,而是c++ 标准模板库中的一个“类”。 在C++编程时,优先考虑使用
string
对象来处理字符串,因为其用法比字符数组更简单,而且不易出错。 定义
string
对象 定义
string
对象和其他数据
类型
没有什么
ESQLC数据
类型
-
string
类型
GBase8s ESQL/C字符串数据
类型
GBase8s ESQL/C支持5种字符串数据
类型
, 如果在数据库的列中使用字符串
类型
,例如CHAR或者VARCHAR, 以下ESQL/C字符串
类型
可以使用: C语言的char
类型
GBase8s ESQL/C预定义
类型
, fixchar,
string
, varchar lvarchar数据
类型
具体使用那种数据
类型
,参考以下条件: 是否希望ESQL/C使用空字符来作为字符串的结束符。 是否希望使用空白字符填充。 ESQL/C 字符串
类型
关于
String
与Integer
类型
比较
问题
Java中== 与equals的
比较
已经很多文章进行介绍,在这不再赘述。 今天在项目中自己埋了一个坑,蒙了好久才找到
问题
。代码如下: Integer a = 101;
String
b = "101"; System.out.println(a.equals(b));
【转载】
String
类型
和Date
类型
之间的转换
在实际应用中,很多时候会用到
String
和Date
类型
之间的转换,比如: 在javaEE项目中,会接受到日期格式的
String
,我们如果要将其转换为Date格式,就会用到SimpleDateFormat类。 1.将
String
转换为Date类 import java.text.ParseException; import java.text.SimpleDateFormat; impo...
Redis之
String
类型
Redis中存取
String
类型
redis中的
String
类型
和java中的字符串
类型
类似,也有一些方法。 Redis中
String
类型
的最大长度为是2^29-1(536870911),因为redis字符串限制在512M大小。 常用命令: (1)向key中存储的值后面追加:append key value 如果指定的key不存在,则相当于新建一个,即作用等于:set key value (2)获取key的存值的长度:strlen key (3)指定key的值自增1:incr key 指定key的
C#
111,094
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章