java的String类型的==和.equals()

来源:互联网 发布:淘宝超时发货赔付规则 编辑:程序博客网 时间:2024/05/21 01:30

使用Java的大家都知道,经常会使用到String类型

当然就少不了判断两个字符串是否相等的问题。

判断String类型相等有两种  str1==str2   和 str1.equals(str2)   都是判断str1是否和str2相等。

1. == 是判断两个变量是否指向同一个地方,即存储位置。也就是说是否引用同一个变量。

2.  .equals()  是判断两个String类型字符串的内容是否一样。 

public class CheckEqual {
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "tao" + "bao";
String b = "tao";
String c = "bao";
System.out.println(a==(b+c));
System.out.println(a.equals((b+c)));
}


}

其对应结果是:


当程序变成下面的:

public class CheckEqual {
private static final String Message = "taobao";
public static void main(String[] args) {
// TODO Auto-generated method stub
String a = "tao" + "bao";
String b = "tao";
String c = "bao";
System.out.println(a==Message);
System.out.println((b+c)==Message);
System.out.println((b+c).equals(Message));
}


}

结果不再是:

false

false

true

而是


何解呢?

关键就在于Message是静态变量,是存储在栈里面。而a则是指向存储taobao的那个位置,即静态变量Message的引用,所以a==Message是true

而(b+c)==Message则是相当于判断new String(b+c) == Message 两个不是指向同一个位置,则结果是false。



原创粉丝点击