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方法具体的作用要看当前的那个类是如何实现重写父类中该方法的。如果没有重写该方法,那么他和==号等价。

Java 中 Equals和==的区别

在谈论equals和==的区别前,我们先简单介绍一下JVM中内存分配的问题。 在JVM中 内存分为栈内存和堆内存。二者有什么区别呢? 当我们创建一个对象(new Object)时,就会调用它的构造函数...
  • tcytcy123
  • tcytcy123
  • 2016年03月09日 16:19
  • 17293

equals()与==的区别与实际应用

equals()与 == 在java编程或系统实际可发中都会用到,但是二者又有实际的区别。千万不要理所当然地认为equals()与==的作用就是一样的,下面就一步步来阐述二者的区别。phone.jav...
  • qq_33290787
  • qq_33290787
  • 2016年07月02日 12:02
  • 2310

equals和==的区别及详解

equals和==的区别 java中equals();方法的源代码是 public boolean equals(Object obj){ return (this=obj); } equals方法只...
  • CISHENGBUHUAN666666
  • CISHENGBUHUAN666666
  • 2017年04月29日 20:16
  • 681

几个例子说明JAVA中的equals和==区别

先说一下java的数据类型: 可以分为基础数据类型和引用类型。引用类型一般是用户自定义的类型如People,或是java自带的引用类型如String等等。 包装类型可以看作是基本数据类型的引用类型。...
  • qq_31598113
  • qq_31598113
  • 2017年01月03日 16:57
  • 2718

Java中==号与equals()方法的区别

==号和equals()方法都是比较是否相等的方法,那它们有什么区别和联系呢? 首先,==号在比较基本数据类型时比较的是值,而用==号比较两个对象时比较的是两个对象的地址值:int x = 10; ...
  • StriverLi
  • StriverLi
  • 2016年11月01日 17:29
  • 2296

"=="和equals和equalsIgnoreCase三者的区别

在JAVA里面,牵扯到equals和equalsIgnoreCase比较字符串的功能函数,前者比较的时候区分大小写,空格,后者比较时忽略大小写。这两个很简单,如下例子:public class ss ...
  • smile9700
  • smile9700
  • 2016年02月19日 11:04
  • 3106

Java面试求职之==与equals()区别

Java中equals和==的区别 java中的数据类型,可分为两类:     1、基本数据类型(也称原始数据类型):byte,short,char,int,long,float,double,bo...
  • Carvin_Zh
  • Carvin_Zh
  • 2015年07月16日 14:46
  • 1161

【java中==与equals的区别】java中==与equals的区别

java中的数据类型,可分为两类:  1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean    他们之间的比较,应用双等...
  • yanhui_wei
  • yanhui_wei
  • 2014年07月09日 12:30
  • 2476

字符串的比较==与equals的区别

我们在用字符串
  • bbyyo
  • bbyyo
  • 2014年07月23日 19:28
  • 1236

java之"equals"和"=="的区别

java之String和Integer等包装类的"equals"和"=="的区别
  • xingzhemoluo
  • xingzhemoluo
  • 2014年10月17日 18:47
  • 1530
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:equals与==的区别
举报原因:
原因补充:

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