`
magic_agate
  • 浏览: 103024 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

equals与==之间的区别

 
阅读更多
equals与==之间的区别
1. 简单数据类型的比较
在java中!简单数据类型的比较是通过==
来进行的。在比较中!只要表达式两边的“值”是相
等的!那么表达式的结果就是true!否则为false。
2. 复杂数据类型的比较
复杂数据类型的比较可以采用“==”,也可以采用"equals"方法进行比较.
如:
Object a = new  Object();
Object b = new  Object();
a==b 的结果应返回false。因为"=="在比较复
杂数据类型的时候(比较的是是否是同一个对象(
只有两个变量指向的是同一个对象的时候( 才能
返回true. 也就是说(在比较的时候(也比较了对象
的地址信息. 只有地址相同的对象才能够返回
true. 而new运算符在每一次运算时(都将会产生
一个新的对象( 每一个新的对象都有自己的内存
和地址. 所以上文代码的比较结果是false。
如果将代码改写为如下形式:
Object a = new  Object();
Object b = a;
那么a==b 的结果将返回true.
如果使用equals()方法,那么应注意该方法是
在哪一个类中实现的, 以及该方法实现的具体形
式.在类Object中,该方法的比较与"=="的比较具
有同样的效果.如下代码将输出false.
public static void main(String args[])
{
   Object a = new Object();
   Object b = new Object();
   System.out.println(a.equals(b));
}
但是,如果比较的数据类型不是Object,而是
其他的数据类型String,StringBuffer 以及各
种包裹类等,这些类中重写了Object类中的函数
equals(),所以在调用equals()方法时将跟据多态
的规则来进行调用,而不一定是要使用Object类
中定义的equals()方法.如下例代码将输出true.
public static void main(String args[])
{
   String a = new String("hello");
   String b = new String("hello");
   System.out.println(a.equals(b));
}

此时调用的是String类中的函数equals(),所
以比较的结果就不同了,它比较时只比较对象的
内容,也就是说,只要字符串中的每一个字符对应
相等,那么字符串对象是相等的,而不管对象的地
址是否相同,对象是否是同一个对象.
上例代码改写为如下形式,将依然返回false.
public static void main(String args[])
{
   String a = new String("hello");
   String b = new String("hello");
   System.out.println(a==b);
}
由此可以看出,equals()方法的重写不影响
"=="的比较规则.
在String类中,除了重写了一个equals()函数
来进行比较外,还有一个函数也可以用于字符串
的比较equalsIgnoreCase(),它的比较规则是只要
字符串对象的对应字符是相等的,那么对象是相
等的,而且,在比较对应的字符的时候,认为大写
字母与小写字母是相等的,如下代码输出true.
public static void main(String args[])
{
   String a = new String("HELLO");
   String b = new String("hello");
   System.out.println(a.equalsIgnoreCase(b));
}
分享到:
评论

相关推荐

    Java解惑系列之一--equals和==之间究竟有什么区别

    equals与==的区别?equals和==有什么区别? Java解惑系列之一--equals和==之间究竟有什么区别 稍微学过一些java的同学都可能在网络上看到这样的一道题: 在java语言当中,equals和==之间究竟有什么区别? 而这道...

    hashcode、equals、==总结1简单总结.txt

    hashcode、equals、==总结1简单总结.txt,他们之间的区别

    ==和equals的比较

    接触c#一年了,一直没搞懂“==”和equals之间的具体区别,今天特意研究了一番,终于豁然开朗了,高兴中!给大家分享

    Java中equals,hashcode和==的区别

    本文中详细的阐述了Java中经常遇到的equals、hashcode以及“==”号三者之间的区别

    Java中==与equals的区别

    他们之间的比较应该用==,比较的是他们的值是否相等。 引用数据类型:当他们在用==比较的时候,比较的是他们在内存中的存放地址。(除非是同一个new出来的对象,他们比较的结果是true,否则都是false,因为每一次...

    “ ==”和.Equals()有什么区别?

    在本文中,我们将讨论“ ==”与“ .Equals in C#”之间的区别。

    【面试】hashCode与equals两者之间的关系 / == 和equals / 为什么要重写equals方法 / 重写equals /hashcode方法 / 为什么要重写hashCode方法

    文章目录1、hashCode与equals两者之间的关系2、== 和equals的区别`3、为什么要重写equals()方法?4、重写equals()方法5、为什么要重写hashCode()方法?6、什么时候需要重写hashCode()方法?7、重写hashCode()方法: ...

    调高C#编程的50个基本技巧

    1.总是用属性 (Property) 来代替可访问的数据成员 2.在 readonly 和 const 之间,优先使用 readonly 3....理解 ReferenceEquals, static Equals, instance Equals 和 比较运算符(==)之间的关系

    提高C#编程水平的50个要点

    理解 ReferenceEquals, static Equals, instance Equals 和 比较运算符(==)之间的关系  10.理解 GetHashCode方法的缺陷  11.在编写循环时,优先使用 foreach.  12.在定义变量的时候就将其初始化  13.使用静态...

    Java 最常见的 208 道面试题:第一模块答案

    它们之间有什么区别? String str="i"与 String str=new String("i")一样吗? 如何将字符串反转? String 类的常用方法都有那些? 抽象类必须要有抽象方法吗? 普通类和抽象类有哪些区别? 抽象类能使用 final 修饰...

    C#学习笔记_20100614

    a.Equals(b) 和 a == b 之间的区别 使用ArrayList 创建和使用 HashTable SortedList: 存储键值对的集合 栈:先进后出队列 队列:先进先出列表 在 C#中遍历和排序对象集合 StringWriter实现的一个功能 创建一个文本...

    java面试题.docx

    == 和 equals 的区别是什么? 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? final 在 java 中有什么作用? java 中操作字符串都有哪些类?它们之间有什么区别? 如何将字符串反转? String 类的...

    java开发大猫聊天室源码-AndroidInterview-Questions:Android面试-问题

    和“==”运算符都用于比较对象以检查相等性,但以下是两者之间的一些区别: .equals() 方法和 == 运算符之间的主要区别在于,一个是方法,另一个是运算符。 我们可以使用 == 运算符进行引用比较(地址比较)和 ....

    Java 2023最新面试知识点总结.pdf

    谈一谈”=“与”equals0"的区别。 《Think in Java》中说:“关系操作符生成的是一个boolean结果,它们计算的是操作数的值之间的关系”。 "=="判断的是两个对象的内存地址是否一样,适用于原始数据类型和枚举类型...

    -互联网Java面试重点难点.rar

    近期也算是抽取出大部分休息的时间,为大家准备了一份通往大厂面试的...它们之间有什么区别? 8. String str="i"与 String str=new String(“i”)一样吗? 9. 如何将字符串反转? 10. String 类的常用方法都有那些?

    Java初学者都必须理解的六大问题

     问题二:"=="和equals方法究竟有什么区别?  ==操作符专门用来比较变量的值是否相等。比较好理解的一点是:  int a=10;  int b=10;  则a==b将是true。  但不好理解的地方是:  String a=new ...

    值类型和引用类型的区别

    言归正传,咱还是先来探讨探讨这二者之间有什么区别吧。记得有一次电话面试中,我直接跟面试官说:“值类型是现金, 引用类型是存折”,后来想想当时说这话虽是有点儿冲动地脱口而出,但也没什么不妥。我这人不善于...

    net学习笔记及其他代码应用

    24.在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。 答:string str = null 是不给他分配内存空间,而string str = \"\" 给它分配长度为空字符串的内存空间。 25.请详述在...

    java源码导读-Java-open-source-learning:Java学习资源向所有人开放,可以为新的编码爱好者提供帮助,以快速浏览一

    抽象与封装之间的区别为了快速修订,以下是点格式在封装和抽象之间的一些关键区别: 抽象和封装之间最重要的区别是抽象在设计级别解决了问题,而封装在实现级别解决了问题。 抽象是指隐藏不必要的细节,同时给出最...

Global site tag (gtag.js) - Google Analytics