关于字符取等的问题
大家看这个程序段运算结果,帮忙解释一下
//a 为一个声明的字符型变量
if( a == 'c')
{
System.out.println("true");
}
else
{
System.out.println("false");
}
问题点数:0、回复次数:11Top
1 楼dulang200x(独狼)回复于 2003-11-01 15:46:41 得分 0
要看你前面的a是怎么定义的!Top
2 楼vbar(S.Q.Y)回复于 2003-11-01 17:28:40 得分 0
是用数据流读入的
Top
3 楼zjcxx(云啸)回复于 2003-11-04 17:43:18 得分 0
falseTop
4 楼peigen(比碗浅)回复于 2003-11-04 22:56:39 得分 0
不懂你的意思哦Top
5 楼alley_zhan(晓柯)回复于 2003-11-06 20:10:36 得分 0
a是string类型的?
用a.equals("c")Top
6 楼yxqc(颖秀倾城)回复于 2003-11-11 22:13:33 得分 0
a.compateTo(c)==0Top
7 楼cyzwziyu(ziyu22)回复于 2003-11-12 13:13:16 得分 0
由a == 'c',我觉得,是基本char,所以是trueTop
8 楼mzzhou(janet)回复于 2003-11-13 23:22:19 得分 0
似乎记得char型不可以这样比较的吧
Top
9 楼vbar(S.Q.Y)回复于 2003-12-02 12:37:34 得分 0
可以这样比较的,我终于搞懂了,其实这是一个在java中的"="和"equals"区别的问题了
当为引用统一快内存的时候,是可以相等的,也就是true
当为不是同块内存的时候,就是false
当用equals时,所作的是值比较,所以要返回真这里应该是用equals的
进来太忙,没来得及回贴,清多多原谅,谁又补充的,清跟贴,谢谢!Top
10 楼cyzwziyu(ziyu22)回复于 2003-12-02 17:38:11 得分 0
我想基本类型都是这样比的吧,没什么特别的呀Top
11 楼cohorse(cohorse)回复于 2003-12-04 14:55:52 得分 0
说得不对,如果a是一个char类型的变量
根本就不可以用equals,不是对象类型是不可以直接调用方法的
a的值如果是'c'('c'表示一个字符),那么这里就有可能返回true。
另外,说到==和equals的区别,我认为根本没有可比性
非要比的话
equals因为是个方法,各类中可以随便写。这个方法是从Object类继承来的。
如果不重载,就比较内存地址。
==比的永远是内存地址。
Top




