首页 > 技术文章 > 关于 == 和 equals() 的区别

lu-manman 2017-12-01 17:43 原文

对于正在学习java的,以及入行不久的小伙伴们,在面试中经常会被面试官问到 "  == 和 equals() 的区别 ?"的问题,你是否回答好了呢?

示例一:

//两个基本类型数据比较
int a = 10;
int b = 10;
System.out.println(a == b);

答案:true

 

示例二:

//两个字符串的比较 
 String x = "hello";
 String y = "hello";
 System.out.println(x == y);
 System.out.println(x.equals(y));

答案:true

           true

 

示例三:

//两个不同字符串的比较
 String x = "hello";
 String y = "world";
 System.out.println(x == y);
 System.out.println(x.equals(y));

答案:false

           false

 

示例四:

 //两个字符串的比较
  String x = "hello";
  String y = " world";
  String z = new String("hello world");
  System.out.println((x+y) == z);

答案:false

 

示例五:

//两个字符串的比较
  String x = "hello";
  String y = " world";
  String z = new String("hello world");
  System.out.println(x+y);
  System.out.println(z);
  System.out.println((x+y).equals(z));

答案:hello world

           hello world

           true

 

小结:基本类型数据用 ==比较,对于字符串类型的数据,如果出现new关键字,必然会在堆内存中开屏空间,那么用 == 去比较的两个引用类型数据的地址,显然得出的结果是false,因此如果比较两个字符串的内容是否相等,用的是equals()方法。

 

推荐阅读