Java中"str1.equals(str2)"和"str1==str2"的区别

  大家好,这是我的第一篇博客,作为即将入职的学生,我现在的心情是既好奇又兴奋,对未知的职场生活充满了无限的憧憬,也想赶紧对大学生活say goodbye,因为自己的能力现在还比较有限,我想通过博客这个平台来慢慢提升自己,我想发一些平常在Java或者其他领域经常使用到的知识,不仅是对你们有帮助,同时也是我自己的进步,谢谢大家了。虽然我知道可能有很多人发过类似的博客或者技术贴,但是我尽量还是用我自己的语言来描述,支持原版。好的,废话不多说,接下来就进入正题吧~

  我们直接从一个实例来开始我们今天的学习吧。

  我新建了一个class名为Test01

public class Test01 {

  public static void main(String[] args){
   String a="helloworld";
   String b="helloworld";

   System.out.println(a.equals(b));
  }
}

  大家看上述实例,答案会是什么呢,首先一点,我们要明白的问题是,不管是".equals()"还是"==",他的返回值是true或者是false,而不是0,1或者-1,所以上述实例的输出值最终为true。现在我们将输出的语句进行修改:

public class Test01 {

  public static void main(String[] args){
   String a="helloworld";
   String b="helloworld";

   System.out.println(a==b);
  }
}

  其输出值仍为true。

  大家都明白,"=="比较的是2个对象的地址,而".equals()"比较的是2个对象的内容,那这个区别究竟体现在那个地方呢,咱们看接下来的实例。

public class Test01 {

  public static void main(String[] args){
   String a="helloworld";
   String b="hello" +new String("world");
  System.out.println(a.equals(b));
  }
}

 

  大家觉得现在的输出是什么呢,没错,依然是true,因为".equals()"比较的是2个对象的内容,很明显不管是字符串a还是字符串b,他们的值没变,都是helloworld,所以返回的值依然是true,我们再看下一个实例。

public class Test01 {

  public static void main(String[] args){
   String a="helloworld";
   String b="hello" +new String("world");
  System.out.println(a==b);
  }
}

 

  没错,这个时候这个表达式的返回值就是false了。因为b2中的world是新申请的内存块,而==判断的是对象的地址而非值,所以不一样。 

  想要搞懂这个其实还是不难的,大家只要注意以后在编程中是需要进行如何的比较即可~

  希望我的分享对大家有帮助,以后我也会积极更新微博,不管是简单的或者是复杂的知识点,或者是我曾经做的项目之类的,我都会分享出我的经验,谢谢大家一起学习,共同进步。

posted @ 2016-10-16 16:36  Hikari410  阅读(4607)  评论(1编辑  收藏  举报