码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-10-16 19:11:10      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

  大家好,这是我的第一篇博客,作为即将入职的学生,我现在的心情是既好奇又兴奋,对未知的职场生活充满了无限的憧憬,也想赶紧对大学生活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是新申请的内存块,而==判断的是对象的地址而非值,所以不一样。 

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

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

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

标签:

原文地址:http://www.cnblogs.com/hikarisama/p/5967060.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!