黑马程序员技术交流社区

标题: [面试题] 关于 == 与 equals ? [打印本页]

作者: 不落羽    时间: 2016-3-14 18:37
标题: [面试题] 关于 == 与 equals ?
        Java中equal和==的区别是什么?
1
2
3
4
5
6
7
8
9
10
public class Test1{
    public static void main(String args[]){
            String a="1234";
            String b="1234";
            String c = new String("1234");
            System.out.println(a==b);
            System.out.println(a==c);
            System.out.println(a.equals(c));
    }
}




作者: 不落羽    时间: 2016-3-14 18:38
String a="1234";
   使用 = 赋值创建String类型的特殊实例,会创建一个对象并储存在常量池中 ;
   String b="1234";
   优先使用常量池中已存在的对象.
   a 和 b 指向的是同一个地址值.
   1. == 比较内容和地址值:  a==b 为 true

   String c =new String("1234"); 创建一个对象存储在一般堆内存中
   2.由于指向不同对象 , 比较地址值 :  a==c 为 false

     String 类中重写的 equals 方法只比较字符串内容 , 不比较地址值
  3. a.equals(c) 为true
作者: 13930972259    时间: 2016-3-14 21:16
==比较的事对象地址,equals比较的是两个对象的值是否一样
作者: 13930972259    时间: 2016-3-14 21:18
==比较的是对象的地址,也就是是否是同一个对象;equals是比较两个对象的值是否一样;。。
作者: sholldoll    时间: 2016-3-14 22:06
==只能比较值,地址值也是值
equals没重写的时候比较的是两个对象的地址值
equals重写后比较的是对象的变量





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