equals与==的区别

转载 2015年11月19日 15:05:26

1. == 是一个运算符

2.equals则是string对象的方法,可以.(点)出来


1、基本数据类型比较

==equals都比较两个值是否相等。相等为true否则为false

2、引用对象比较

==equals都是比较栈内存中的地址是否相等。相等为true否则为false


需注意几点:

istring是一个特殊的引用类型。对于两个字符串的比较,不管是==equals这两者比较的都是字符串是否相同

ii、当你创建两个string对象时,内存中的地址是不相同的,你可以赋相同的值

所以字符串的内容相同。引用地址不一定相同,(相同内容的对象地址不一定相同),但反过来却是肯定的

iii、基本数据类型比较(string 除外)==equals两者都是比较值


在Object类源码中是这样写的。

<pre name="code" class="java">public boolean equals(Object obj) {
		return (this == obj);
	}


他同样使用==号进行内存地址的比较。但是许多java类中都重写了这个方法,比如String。
<pre name="code" class="java">public boolean equals(Object anObject) {
		if (this == anObject) {
			return true;
		}
		if (anObject instanceof String) {
			String anotherString = (String) anObject;
			int n = count;
			if (n == anotherString.count) {
				char v1[] = value;
				char v2[] = anotherString.value;
				int i = offset;
				int j = anotherString.offset;
				while (n-- != 0) {
					if (v1[i++] != v2[j++])
						return false;
				}
				return true;
			}
		}
		return false;
	}

String里的方法,如果==号比较不相等,还会进行一下值的比较。
所以equals方法具体的作用要看当前的那个类是如何实现重写父类中该方法的。如果没有重写该方法,那么他和==号等价。

相关文章推荐

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

  • 2013年04月22日 10:17
  • 11KB
  • 下载

==和equals的应用区别

  • 2012年06月12日 15:31
  • 12KB
  • 下载

Java面试题之==和equals的区别

在java程序设计中,经常需要比较两个变量值是否相等。例如 1、简单数据类型比较 a = 10; b = 10; if(a == b){    //写要执行的代码 } 2、引用数据类型比...

equals(Object) 与 == 的区别

  • 2010年09月03日 15:49
  • 27KB
  • 下载

==和equals的区别

  • 2013年09月10日 14:27
  • 47KB
  • 下载

hashCode与equals的区别与联系

一、equals方法的作用    1、默认情况(没有覆盖equals方法)下equals方法都是调用Object类的equals方法,而Object的equals方法主要用于判断对象的内存地址引...
  • afgasdg
  • afgasdg
  • 2011年10月20日 03:01
  • 77349

Java中的==和equals区别

  • 2013年01月30日 10:23
  • 15KB
  • 下载

java中equals和==的区别.doc

  • 2011年06月02日 09:49
  • 42KB
  • 下载

Java学习从菜鸟变大鸟之一 hashCode()和equals()的本质区别和联系

equals()是判读两个Set是否相等[前提是equals()在类中被覆盖]。==决定引用值是否指向同一对象。 1、当向集合set中增加对象时,首先计算要增加对象的hashCode码,根据该值来得到...
  • lishehe
  • lishehe
  • 2014年01月28日 11:43
  • 4587
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:equals与==的区别
举报原因:
原因补充:

(最多只允许输入30个字)