Java中如何比较两个字符串

时间:2019-05-19 01:25:43  来源:igfitidea点击:

问题-Java编程语言中如何比较两个字符串?

Java为字符串比较提供了两个选项。
第一个是==操作符,第二个是用于Java字符串比较的.equals()函数。
本Java教程将理解Java下的字符串比较,以及用于Java中字符串比较的==和.equals()之间的区别。
操作符==检查对象引用,如果两个字符串属于同一对象,则匹配为真。
Function .equals()检查字符串的值,它们属于哪个对象无关紧要。

比较两个简单的字符串

如果两个字符串都是简单字符串。
Java将把它们看作相同的对象。
因此(== 和 equals())都将为true。

public class StringCompare{

   public static void main(String args[]){
      String str1 = "hello world";
      String str2 = "hello world";

      System.out.println( str1 == str2 );       //  True
      System.out.println( str1.equals(str2) );  //  True
   }
}

比较两个字符串(String)对象

如果两个字符串都是对象字符串。
Java将把它们看作不同的-2对象。
所以==操作符将返回false,而equals()函数将返回true;

public class StringCompare{

   public static void main(String args[]){
      String str1 = new String("hello world");
      String str2 = new String("hello world");

      System.out.println( str1 == str2 );        //  False
      System.out.println( str1.equals(str2) );   //  True
   }
}

比较一个简单的字符串和一个字符串对象

如果一个是简单字符串,另一个是对象字符串。
Java将把它们看作不同的2个对象。
所以==操作符将返回false,而equals()函数将返回true;

public class StringCompare{

   public static void main(String args[]){
      String str1 = "hello world";
      String str2 = new String("hello world");

      System.out.println( str1 == str2 );        //  False
      System.out.println( str1.equals(str2) );   //  True
   }
}

与空字符串比较

但在与空字符串比较时,==将返回false,但.equals()函数将抛出异常。
为了避免空null异常( null exception),我们可以使用Objects.equals(str1, str2)函数如下例。

import java.util.Objects;
public class StringCompare{

   public static void main(String args[]){
      String str1 = null;
      String str2 = new String("hello world");

      System.out.println(str1.equals(str2));		// 抛出异常
      System.out.println(Objects.equals(str1, str2));	//  False

   }
}