字符串比较中==和equals的区别(Java)

Java字符串比较时==和equals的区别

在 Java 中,字符串比较可以使用 ==equals() 方法。它们的区别如下:

  1. == 比较的是两个字符串对象的内存地址是否相同,也就是判断它们是否是同一个对象。如果两个字符串对象的内存地址相同,则 == 返回 true,否则返回 false

  2. equals() 比较的是两个字符串对象的内容是否相同。如果两个字符串对象的内容相同,则 equals() 返回 true,否则返回 false

举个例子,假设有两个字符串对象 s1s2,它们的值都是 "hello"。则使用 == 比较时,因为 s1s2 对象的内存地址不同,所以 s1 == s2 的结果是 false。而使用 equals() 比较时,由于 s1s2 对象的内容相同,所以 s1.equals(s2) 的结果是 true


Tips: 需要注意的是,当使用 String 类型的字面值来创建字符串时,Java 会自动将其缓存起来以提高性能。这意味着对于相同的字符串常量,它们的内存地址是相同的

例如:

String s1 = "hello";
String s2 = "hello";

在上述代码中,因为 "hello" 是一个字符串常量,所以 s1s2 对象的内存地址是相同的。因此,使用 == 比较时,s1 == s2 的结果是 true

如果要比较字符串对象的内容是否相同,应该使用 equals() 方法,而不是 == 运算符。

String s1 = "hello";
String s2 = "hello";

String s3 = new String("hello");
String s4 = new String("hello");

System.out.println(s1 == s2); // true,因为它们引用相同的字符串常量
System.out.println(s1.equals(s2)); // true,内容相同

System.out.println(s1 == s3); // false,不同的对象,不同的内存地址
System.out.println(s1.equals(s3)); // true,内容相同

System.out.println(s3 == s4); // false,不同的对象,不同的内存地址
System.out.println(s3.equals(s4)); // true,内容相同

你可能感兴趣的:(javaSE,java,开发语言)