问答详情
源自:6-1 学生选课---判断 List 中课程是否存在

为什么比较名字时不能用==,要用equals?

为什么比较名字时不能用==,要用equals?

提问者:阿崔cuicui 2018-03-27 18:55

个回答

  • 慕婉清0587971
    2019-08-02 12:00:54

    在基本类型中,“==”比较的是两者的值

    在引用类型中,“==”比较的是两者的内存地址,及是否为同一个对象

    equals比较两者的内存地址,及是否同一个对象,但在String类中自动重写,比较是两者的值是否相等

    如果此处用“==”,比较的是内存地址,用equals比较的是两者的值,因此用equals

  • songqi12so
    2018-08-28 17:35:21

    String类型中的equals方法是重写过的,并不是直接比对地址是否相同。

    name为String类型,比较的时候自然需要使用equals,而“==”比对的话,String类型会有很多情况是无法正常比对的,因为“==”比对的是地址,而String类型的产生和赋值都有可能内容一致,但是为不同的对象。

  • 未来年薪百万的安卓工程师
    2018-05-13 14:47:14

    java中的==和equals

    对于基本数据类型==号只是比较值是否相同(因为基本数据类型都有自己的内存,不可能相等)

    对于引用类型,==比较的是两个指向的虚地址是不是相同(在堆中的位置)

    Equals在没有重写的前提下也是比较内存地址

    String和Integer类中,因为重写了Equals,所以比较的是值

    实际中可以自己重写equals方法来比较值


  • 风景旧曾谙啊
    2018-03-30 11:35:04

    比较String类型的内容用equals,比较String类型的引用地址用==,除此之外没有重写的equals都是比较地址的,比较字符串是用equals 因为String类型的数据在栈中存放的是引用地址,string比较特殊,它内部处理不一样

  • 慕粉3254033
    2018-03-27 20:29:06

    “”==“”  比较的是地址是否相同,equals比较的是内容是否相同。