为什么不可以调用equals方法

来源:2-4 Java 中的 String 类常用方法 Ⅱ

白天丶不懂夜的黑

2014-11-08 15:37

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

写回答 关注

9回答

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

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

    城序圆 回复慕娘2181...

    软软问句,为什么加了“”就变成string?

    2019-03-11 21:43:36

    共 4 条回复 >

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

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

    月影下

    说反了

    2017-05-24 19:41:57

    共 1 条回复 >

  • 紫铃听风
    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);

    }

    这样子也行


    城序圆

    想问下,就是if给您注释的那一段,去掉“”怎么就不行了?萌新不太懂,可以回复下吗哈

    2019-03-11 21:38:22

    共 3 条回复 >

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

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

    慕容6636...

    另外equals()在object类里最初是用来比较是否指向同一内存空间,只在个别类里重写/覆盖成比较值是否相等(比如String,Integer,Date等),基本类型可以用= = 判断,应该就没有重写/覆盖equals吧。然后我不太确定(s.charAt(i)).equals(‘a’)有没有给s.charAt(i)或a分配内存空间,但是如果有的话应该返回false吧,因为指向的内存空间不一样

    2016-09-01 11:38:38

    共 1 条回复 >

  • 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)

    qq_卡卡罗...

    对对对,equals()方法需要对象来引用。。。

    2017-10-15 21:42:33

    共 1 条回复 >

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

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

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

    波浪波浪海海 回复长颈鹿在附近

    可以的 你试一试~

    2016-02-01 10:46:03

    共 3 条回复 >

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

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

    君未知 回复武当王也

    讲的透彻!

    2018-01-14 11:56:04

    共 3 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题