黑马程序员技术交流社区

标题: 了解==和equals的区别来看看 [打印本页]

作者: 突然世界晴    时间: 2015-4-7 10:04
标题: 了解==和equals的区别来看看
String str="abc";
String str1=new String();
str1="abc";
str==str1;    是true还是false?
str.equals(str1) ; 是true还是false?

int[] arr=new int[]{5,6,8,3,4};
int[] arr1={5,6,8,3,4};
System.out.println(arr==arr1); 是true还是false?
System.out.println(arr.equals(arr1)); 是true还是false?



作者: 若果每天都努力    时间: 2015-4-7 10:49
前两个都是 true,后两个都是false吧。
作者: 陈佳    时间: 2015-4-7 10:56
  1. String str="abc";
  2.                 String str1=new String();
  3.                 str1="abc";
  4.                 System.out.println(str==str1);    //是true,这里比较两者在内存中指向同一地址
  5.                 System.out.println(str.equals(str1)); //是true,String类覆写了Object类中的equals方法,比较的不是地址值,而是字符串的内容
  6.                
  7.                 int[] arr=new int[]{5,6,8,3,4};
  8.                 int[] arr1={5,6,8,3,4};
  9.                 System.out.println(arr==arr1); //是false,因为这两个引用型变量指向了不同的对象
  10.                 System.out.println(arr.equals(arr1)); //是false,数组是一个Object了的对象,继承了Object类中的equals方法,比较的是地址值
复制代码

作者: kkqisheng    时间: 2015-4-7 11:04
陈佳 发表于 2015-4-7 10:56

求解,关于最后一个arr.equals(arr1)究竟比较的是什么。我们知道,arr==arr1比较的是两个引用变量的地址值,而数组内容的比较应该用Arrays.equals(arr,arr1),那么arr.equals(arr1)究竟比较的是什么?
作者: lurenge    时间: 2015-4-7 11:05
true true false falese
==
作者: 陈佳    时间: 2015-4-7 11:19
kkqisheng 发表于 2015-4-7 11:04
求解,关于最后一个arr.equals(arr1)究竟比较的是什么。我们知道,arr==arr1比较的是两个引用变量的地址值 ...

数组对象的引用直接调用equals方法肯定是使用的父类Object类中的equals方法,查API知道Object类的equals方法就是比较的地址值,方法内部的代码就是使用的==,至于Arrays工具类的equals方法,覆盖了Object类中的equals方法,则是比较的两个数组对象的内容了,API帮助文档说得很清楚了。希望对你有帮助!
static boolean equals(int[] a, int[] a2) : 如果两个指定的 int 型数组彼此相等,则返回 true。
作者: 罗晓飞    时间: 2015-4-7 12:11
一个是判断内存地址的,一个是判断值的。。。。
作者: 九个太阳学程序    时间: 2015-4-7 21:03
加油  努力 每天加油一点点
作者: Chenli    时间: 2015-4-7 21:34
来看看答案,一直没分清
作者: natsu647    时间: 2015-4-7 22:44
这个也算是新手常碰到的难点了。
作者: ぃ鉲布奇诺    时间: 2015-4-8 09:04
路过,瞅瞅 没有分清。。。。
作者: long_yihuan    时间: 2015-4-8 11:01
前两个true后两个false
作者: shw16888    时间: 2015-4-8 11:03
true true false falese




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2