`
jiq408694711
  • 浏览: 36631 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

Java对象之间的比较之equals和==

 
阅读更多
/**
 * 
 */
package string;

/**
 * @author Administrator
 * “==” 比较引用,即判断是否指向同一个对象
 * “equals()” 默认是比较引用,包装类重写了这些方法,比较对象内容,我们自己的类一般也重写equals方法
 *
 * equals方法属于Object类,默认的是比较两个对象引用是否相等,即是否指向同一个对象
 * 和使用==号来比较的结果是一样的。
 * 
 * 对于String,Integer等包装类型来说,他们已经重写了Object的equals方法,根据内容判断是否相等。
 * 
 * 所以一般来说,对于自己实现的类,要想在某些情况下比较返回true,必须重写equals方法。
 * 某些情况下,重写equals方法最好吧hasCode()也重写了,比如要存入Map/Set的时候。
 */
//没有重写equals的对象
class CompareObject1{
	int v;
	public CompareObject1(int v){
		this.v = v;
	}
}

//重写equals的对象
class CompareObject2{
	int v;
	public CompareObject2(int v){
		this.v = v;
	}
	
	public boolean equals(Object o){
		CompareObject2 c = (CompareObject2)o;
		return this.v == c.v? true:false;
	}
}

public class EqualsTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		//普通对象比较
		CompareObject1 c1 = new CompareObject1(1);
		CompareObject1 c2 = new CompareObject1(1);
		System.out.println(c1 == c2); 		//引用不同
		System.out.println(c1.equals(c2)); 	//引用不同
		
		//String比较
		String s1 = new String("hello");
		String s2 = new String("hello");
		System.out.println(s1 == s2);		//引用不同
		System.out.println(s1.equals(s2));	//里面的值相同,重写过equals方法
		
		
		//Integer比较
		Integer int1 = new Integer(1);
		Integer int2 = new Integer(1);
		System.out.println(int1 == int2);		//引用不同
		System.out.println(int1.equals(int2));	//里面的值相同,重写过equals方法
		
		//重写了equals方法的普通对象的比较
		CompareObject2 o1 = new CompareObject2(1);
		CompareObject2 o2 = new CompareObject2(1);
		System.out.println(o1 == o2); 			//引用不同
		System.out.println(o1.equals(o2)); 		//里面的值相同,重写过equals方法
	}
}
/**
 * Output:
false
false
false
true
false
true
false
true
 * */

分享到:
评论

相关推荐

    java中equals和==的区别.doc

    Java 中的 equals 和 == 是两个不同的运算符,它们之间的区别是非常重要的。 首先,我们需要了解 Java 中的内存模型。在 Java 中,变量可以分为两种:基本类型(primitive type)和引用类型(reference type)。...

    java中equals和==的区别

    Java 中的 equals 和 == 是两个不同的概念,它们之间的区别是初学 Java 的人很容易混淆的。下面,我们将详细地解释它们之间的区别。 在 Java 中,变量可以分为两种:基本类型(primitive type)和引用类型...

    java中equals和==的区别.docx

    Java 中的 equals 和 == 是两个常用的操作符,经常用于比较对象或变量的值。然而,许多开发者不知道它们之间的区别,或者误用它们,导致程序出错。下面我们将详细解释 equals 和 == 的区别,并通过实例代码来加深...

    equals与==之间的区别

    在Java编程语言中,`equals`方法与`==`操作符是进行对象比较时最常用的两种方式,但它们之间存在着显著的区别。理解这些差异对于正确地处理对象比较至关重要。 ### `==` 操作符 `==`操作符主要用于比较两个基本...

    字符串比较之 “==”和 “equals”

    在Java编程语言中,字符串是比较常见的数据类型,用于存储文本信息。在处理字符串时,我们经常需要比较两个字符串是否相等。...通过了解这些基础知识,开发者可以更好地处理和比较Java中的字符串。

    java中equals和==的区别.pdf

    在Java编程语言中,`equals()`方法和`==`运算符是两个经常被用来比较对象的工具,但它们之间有着显著的区别。理解这些差异对于编写正确的代码至关重要。 首先,`equals()`方法是`java.lang.Object`类的一个成员方法...

    Java中equals,hashcode和==的区别

    hashcode 方法可以将一个对象转换为一个整数值,以便于对象的存储和比较。通常情况下,hashcode 方法需要和 equals 方法一起使用,以确保两个对象的散列码相同,如果它们的内容相同。 例如,在 HashSet 中,我们...

    java中equals和==的比较.pdf

    在Java中,`equals()` 和 `==` 是用来比较对象的两种方式,但它们之间存在明显的区别。 `==` 操作符用于比较基本类型变量的值或者引用类型变量的内存地址。在引用类型中,`==` 比较的是两个变量是否指向堆内存中的...

    java中equals和==的区别[文].pdf

    在Java编程语言中,`equals()`方法和`==`运算符是两个经常被用来比较对象的工具,但它们之间存在着显著的区别。理解这些差异对于编写正确的代码至关重要。 首先,`equals()`方法是`java.lang.Object`类的一个成员...

    浅谈java 中equals和==的区别

    在Java编程语言中,`equals()` 和 `==` 运算符经常被用来比较对象,但它们之间存在着显著的区别。理解这些差异对于编写正确、健壮的代码至关重要。以下是关于 `equals()` 和 `==` 在Java中的详细解释。 首先,`==` ...

    Java中的==和equals区别

    在Java编程中,比较对象的相等性是一个常见的需求,但很多初学者对于`==`运算符与`equals`方法的区别容易混淆。本文将深入探讨两者之间的差异,以及它们在不同场景下的应用。 #### `==` 运算符 `==`运算符主要用于...

    java中equals和的比较.doc

    在 Java 编程中,equals 和 == 是两个常用的比较操作符,但它们之间存在着很大的区别。了解这两者的区别非常重要,因为它直接影响着程序的正确性和效率。 在 Java 中,有两种类型的变量:基本类型和引用类型。基本...

    ==和equals方法究竟有什么区别

    在Java编程语言中,`==`和`equals()`方法是用来比较对象之间关系的两种常见方式,但它们在使用上有着显著的区别。 首先,`==`运算符主要用于比较基本类型(如int、char、byte等)的值是否相等,或者比较引用类型...

    java中的比较运算符== 与 equals()方法 ..doc

    在Java编程语言中,经常需要对变量进行比较,这涉及到了两种常见的比较方式:`==`运算符和`equals()`方法。这两种方式有着本质的区别,并且适用于不同类型的数据。下面将详细介绍这两者之间的差异以及它们各自的应用...

    知识点 比较运算符==和equals方法的比较

    在Java编程语言中,比较运算符`==`和`equals()`方法是用来检查两个对象是否相等的,但它们之间存在显著的区别。理解这些差异对于编写正确的代码至关重要。 首先,我们来看`==`运算符。它主要用于基本数据类型的比较...

    equals(Object) 与 == 的区别

    因此,== 运算符比较的是两个对象的引用,而 equals(Object) 方法比较的是两个对象的内容。这两个概念之间的区别是非常重要的,正确地使用它们可以避免许多编程错误。 在实际编程中,我们通常需要比较两个对象的...

Global site tag (gtag.js) - Google Analytics