Java中 == 与 equals() 用于判断字符串是否相等有何区别

在java中我们常用的比较字符串是否相等,一般都采取 s1.equals(s2),一般都不会用 s1 == s2
先看一下下面这一段代码:

package test1;
public class Test{
	public static void main(String args[]){
	String s1 = "Hello";
	String s2 = "Hello";
	String s3 = new String("Hello");
	String s4 = new String("Hello");
	
	System.out.println("s1==s2:"+(s1==s2));
	System.out.println("s3==s4:"+(s3==s4));
	System.out.println("s1==s3:"+(s1==s3));
	
	System.out.println("s1 equals s2:"+s1.equals(s2));
	System.out.println("s3 equals s4:"+s3.equals(s4));
	System.out.println("s1 equals s3:"+s1.equals(s3));
	}
}

这段代码的最终输出为:

s1==s2:true
s3==s4:false
s1==s3:false
s1 equals s2:true
s3 equals s4:true
s1 equals s3:true

原因是:

  1. 用equals方法,该方法比较的是字符串的内容是否相同,首先可以清晰得知四个字符串内容一致,即值相等,所以后三个为true;
  2. 用 == 运算符,该运算符表示指向字符串的引用是否相同,因为在java中字符串的值是不可改变的,相同的字符串在内存中只会存一份,所以 s1 和 s2 指向的是同一个对象, s3 ==s4 将返回 false,因为 s3 和 s4 指向不同的对象。
发布了47 篇原创文章 · 获赞 108 · 访问量 4735

猜你喜欢

转载自blog.csdn.net/qq_44759710/article/details/103814002