问答详情
源自:2-4 Java 中的 String 类常用方法 Ⅱ

为什么不可以调用equals方法

为什么不可以设置一个字符串,字符串内容是“a”(String ch = "a"),然后调用equals方法,与s.charAt(i)进行比较(  ch.equals(s.charAt(i))  )?不也是一样的内容吗?为什么一定是同一个字符,而不能是内容相同呢??求解

提问者:白天丶不懂夜的黑 2014-11-08 15:37

个回答

  • 偌颜宁
    2014-11-10 15:35:25
    已采纳

    s.charAt(i)返回的值是char是一个基本类型,用==比较就可以了,只有当是引用类型的时候用equals会比较好

  • 月影下
    2017-05-24 17:49:02

    equals表示两个字符串完全相同,是来自同一对象的引用,地址相同。而==表示仅仅是字符串内容相同,地址不一定一样。

  • 紫铃听风
    2016-09-23 23:09:55

    public static void main(String[] args) {

    /* String str="学习 JAVA 编程 ";

    System.out.println("获取1位置字符"+str.charAt(1));

    byte[]b=str.getBytes();

    for(byte a:b){

    System.out.print(a+" ");

    */

    String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";

        

        // 出现次数

    int num = 0;

        

         // 循环遍历每个字符,判断是否是字符 a ,如果是,累加次数

    for (int i=0;i<s.length();i++                       )

    {String b=s.substring(i,i+1);

            // 获取每个字符,判断是否是字符a

    if (b.equals("a") )

    //(s.charAt(i) +" ").equals("a"))

    {

                // 累加统计次数

    num++; 

    }

    }

    System.out.println("字符a出现的次数:" + num);

    }

    这样子也行


  • 慕容6636443
    2016-09-01 11:30:22

    字符的比较会不会是比较ASCII码的值呢,因为感觉s.charAt(i)= = 'a'不太可能是同一个内存地址

  • FINE_Android
    2016-06-05 00:28:33

    equal方法是String类型的方法,而char是基本数据类型,不是一个类,是没有equal方法的,多想想类的概率,对象的该类,Java是面向对象的语言,需要慢慢体会,String源码也非常简单,可以自己看看找出定义的equal方法

  • 流逝的回忆已成空白
    2016-05-24 09:41:38

    public class HelloWorld {

        public static void main(String[] args) {

    // 定义一个字符串

    String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";


            // 出现次数

    int num = 0;

            

             // 循环遍历每个字符,判断是否是字符 a ,如果是,累加次数

    for (int i = 0 ; i < s.length(); i++){

                // 获取每个字符,判断是否是字符a

    if ((s.charAt(i) + "").equals("a")) {

                    // 累加统计次数

    num ++; 

    }

    }

    System.out.println("字符a出现的次数:" + num);

    }

    }


  • carriebear
    2015-06-11 11:10:01

    equals 是引用类型String的方法,而s.charAt(i)返回的是一个字符,是一个基本数据类型的数据,不是一个对象,所以没有equals方法。(有问题请批评指出啊,3q)

  • bobzhouht
    2015-04-24 10:22:14

    因为.equals 只能比较类型相同的两个对象内容,如果你把char转换成string就可以用了,比如:

    if ((s.charAt(i)+"").equals("a"))

  • 偌颜宁
    2014-11-17 14:27:03

    equals方法是比较两个字符串是否相等,而这里charAt()方法返回的是一个字符型,两个类型都不相同的变量,如何用equals比较?所以这里用字符型的数据采用==进行比较