为了账号安全,请及时绑定邮箱和手机立即绑定

string与char的比较的问题

string与char的比较的问题

是一条鱼吗 2016-10-19 09:22:33
if(s1.equals(a)) { num++; }s1为string型a为char型 这个if不能执行 为什么 求教
查看完整描述

4 回答

已采纳
?
四无小青年

TA贡献88条经验 获得超43个赞

首先,equals()接受的参数是object的,并不是评论中的string,不要误人子弟,只是在equals()内部使用 instanceof进行了对象的判定。下面是jdk7中的源码:

    public boolean equals(Object anObject) {//接收的参数是Object 
        if (this == anObject) {
            return true;
        }
     //使用instanceof操作判断传入的参数是不是属于String的实例,若为否直接返回false(这也是问题的答案所在)
        if (anObject instanceof String) {
            String anotherString = (String) anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                            return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

希望更多人能从根源去找问题的所在,望采纳。

查看完整回答
4 反对 回复 2016-10-19
?
ziom

TA贡献948条经验 获得超1109个赞

因为String的equals方法需要传入一个String类型的参数

查看完整回答
1 反对 回复 2016-10-19
点击展开后面1
?
Tobey_滔

TA贡献242条经验 获得超128个赞

两个不同的类型是不能比较的...先对其中一个进行转型然后再进行比较吧!!!a.toString()...

查看完整回答
反对 回复 2016-10-19
?
sntatas

TA贡献53条经验 获得超11个赞

String本质是char数组,char只是一个变量,两者类型不同自然不能比较

查看完整回答
反对 回复 2016-10-19
?
望远

TA贡献1017条经验 获得超1032个赞

将char类型转换为Character类型,然后调用它的toString()方法

查看完整回答
反对 回复 2016-10-19
  • 4 回答
  • 1 关注
  • 2100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信