java 中String.equals和==的比较
Java 中 String.equals 和 == 的比较 Java 中 String.equals 和 == 的比较是 Java 编程语言中一个常见的概念,但是一些初学者容易混淆这两个概念。下面我们将详细介绍 Java 中 String.equals 和 == 的比较。 String.equals() String.equals() 是 Java 中 String 类的方法,用于比较字符串的内容是否相等。该方法会比较字符串的每个字符是否相同,包括大小写。如果两个字符串的内容相同,那么 equals() 方法将返回 true,否则返回 false。 == == 是 Java 中的比较运算符,用于比较两个对象的引用是否相同。如果两个对象的引用相同,那么 == 运算符将返回 true,否则返回 false。 String.equals() 和 == 的区别 String.equals() 和 == 的主要区别在于它们比较的内容不同。String.equals() 比较字符串的内容,而 == 比较字符串的引用。 在 Java 中,String 是一个特殊的类,它可以使用字面量来创建字符串对象。例如:String s1 = "Hello"; 当我们使用字面量创建字符串对象时,JVM 会将其缓存在字符串常量池中,以便重复使用。 例如: ```java String s1 = "Hello"; String s2 = "Hello"; System.out.println(s1 == s2); // true ``` 在上面的例子中,s1 和 s2 引用的是同一个字符串对象,因为它们都是使用字面量创建的。 但是,如果我们使用 new 关键字创建字符串对象,那么情况将不同: ```java String s1 = new String("Hello"); String s2 = new String("Hello"); System.out.println(s1 == s2); // false System.out.println(s1.equals(s2)); // true ``` 在上面的例子中,s1 和 s2 引用的是不同的字符串对象,因为它们都是使用 new 关键字创建的。虽然它们的内容相同,但它们的引用不同。 intern() 方法 intern() 方法是 String 类中的方法,用于将字符串对象添加到字符串常量池中。如果字符串对象已经存在于常量池中,那么 intern() 方法将返回该对象的引用。 例如: ```java String s1 = new String("Hello"); String s2 = new String("Hello"); s1 = s1.intern(); s2 = s2.intern(); System.out.println(s1 == s2); // true System.out.println(s1.equals(s2)); // true ``` 在上面的例子中,我们使用 intern() 方法将字符串对象添加到字符串常量池中。然后,我们可以使用 == 运算符来比较字符串对象的引用。 Java 中 String.equals() 和 == 的比较是不同的概念。String.equals() 比较字符串的内容,而 == 比较字符串的引用。需要注意的是,在 Java 中,String 是一个特殊的类,它可以使用字面量来创建字符串对象,并且可以使用 intern() 方法将字符串对象添加到字符串常量池中。