java equals和==的区别 ==和equals的区别

  ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。

  比较的是一个对象在内存中的地址值,

  比如2个字符串对象

  String s1 = new String("str");

  String s2 = new String("str");

  如果用==号比较,会返回false,因为创建了两个对象,他们在内存中地址的位置是不一样的。

  equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。

java equals和==的区别 ==和equals的区别

  equals的情况比较复杂,它是java.lang.Object类中的一个方法。因为java中所有的类都默认继承于Object,所以所有的类都有这个方法。

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

  public boolean equals(Object obj) {

  return (this == obj);

  }

  他同样使用==号进行内存地址的比较。但是许多java类中都重写了这个方法,比如String。

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

  

爱华网本文地址 » http://www.aihuau.com/a/3115471/960402807.html

更多阅读

红米1S电信版和移动版和联通版的区别 红米1s移动版破解联通

红米1S电信版和移动版和联通版的区别——简介 直到今天,发烧级平民手机红米手机各种移动运营商制式总算全部发布起了!这也给不是IT行业的朋友选购带来了纠结,哪一版本适合自己呢?各个版本有什么全部呢?今天小编为你一一解析!希望能给你提

石英表和机械表的区别 精 机械表石英表区别

石英表和机械表的区别 精——简介准备想购买一块手表,但不很清楚石英表和机械表的区别在哪,经过一番购买咨询,也知道了他们之间的一些区别,下面分享给大家,在买手表、钟表等时可以参考一下哦。石英表和机械表的区别 精——方法/步骤石英

电脑待机与休眠的区别 电脑待机和休眠的区别

电脑待机与休眠的区别? ? 首先确定的是休眠和待机不能下载的。因为硬盘都断电了。?休眠和待机的原理都是吧内存的东西保存住,下次就可以不用重新加载操作系统,但他们最大的不同是前者把内存中的数据临时保存到硬盘中,下次开机就直接

声明:《java equals和==的区别 ==和equals的区别》为网友雨夜的街道分享!如侵犯到您的合法权益请联系我们删除