String字符串相等判断

== :比较的是内存地址值

equals: 比较的是值,对象的equals()可以被重写

-----------------------------------------------------------

java中字符串的比较:==

我们经常习惯性的写上if(str1==str2),这种写法在java中可能会带来问题

String a="abc";

String b="abc"

那么a==b将返回true。因为在java中字符串的值是不可改变的,相同的字符串在内存中只会存一份,所以a和b指向的是同一个对象;

-----------------------------------------------------------

String a=new String("abc");

String b=new String("abc");

那么a==b将返回false,此时a和b指向不同的对象。

-----------------------------------------------------------

用equals方法比较的是字符串的内容是否相同

String a=new String("abc");

String b=new String("abc");

a.equals(b);

将返回true。

-----------------------------------------------------------

String s1 = “abc”;

String s2 = “a”;

String s3 = “bc”;

String s4 = s2 + s3;

System.out.println(s1 == s4);

A:false,因为s2+s3实际上是使用StringBuilder.append来完成,会生成不同的对象

-----------------------------------------------------------

String s1 = “abc”;

final String s2 = “a”;

final String s3 = “bc”;

String s4 = s2 + s3;

System.out.println(s1 == s4);

A:true,因为final变量在编译后会直接替换成对应的值,所以实际上等于s4=”a”+”bc”,而这种情况下,编译器会直接合并为s4=”abc”,所以最终s1==s4。

-----------------------------------------------------------

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从网上复制的,看别人的比较全面,自己搬过来,方便以后查找。原链接:https://www.cnblogs.com/...
    lxtyp阅读 1,368评论 0 9
  • package cn.itcast_01;/* 字符串:就是由多个字符组成的一串数据。也可以看成是一个字符数组。 ...
    蛋炒饭_By阅读 630评论 0 0
  • String类和正则表达式 今天的主要内容 Scanner类概述Scanner获取数据出现的小问题及解决方案 St...
    须臾之北阅读 1,958评论 0 3
  • 概述 在分析字符串常量池之前,先来分析一下java的内存区域,然后再各种的情况分析一下各种情况下的情况; 在《深入...
    riverhh阅读 839评论 0 2
  • String类 String s1 = "abc"; //在常量区中存放了一个"abc"的字符串对象 Strin...
    曾月月阅读 493评论 0 0