A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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?


12 个回复

倒序浏览
前两个都是 true,后两个都是false吧。
回复 使用道具 举报
  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方法,比较的是地址值
复制代码
回复 使用道具 举报

求解,关于最后一个arr.equals(arr1)究竟比较的是什么。我们知道,arr==arr1比较的是两个引用变量的地址值,而数组内容的比较应该用Arrays.equals(arr,arr1),那么arr.equals(arr1)究竟比较的是什么?
回复 使用道具 举报
true true false falese
==
回复 使用道具 举报
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。
回复 使用道具 举报
一个是判断内存地址的,一个是判断值的。。。。
回复 使用道具 举报
加油  努力 每天加油一点点
回复 使用道具 举报
来看看答案,一直没分清
回复 使用道具 举报
这个也算是新手常碰到的难点了。
回复 使用道具 举报
路过,瞅瞅 没有分清。。。。
回复 使用道具 举报
前两个true后两个false
回复 使用道具 举报
true true false falese
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马