Java String 对象创建和比较:== vs equals 方法

在 Java 中,创建 String 对象有两种常见的方式:使用字面量和使用 new 关键字。这两种方式在内存管理和比较方面存在差异。

1. 使用字面量创建 String 对象

String str1 = "Hello"; // 使用字面量创建 String 对象
String str2 = "Hello"; // 使用字面量创建 String 对象

使用字面量创建的 String 对象会被 Java 编译器放入字符串常量池中。如果字符串常量池中已经存在相同内容的字符串对象,则直接返回该对象的引用。因此,使用字面量创建的相同内容的字符串对象实际上指向同一个对象。

2. 使用 new 关键字创建 String 对象

String str3 = new String("Hello"); // 使用 new 关键字创建 String 对象

使用 new 关键字创建的 String 对象会在堆中创建一个新的 String 对象,并返回该对象的引用。即使字符串内容相同,使用 new 关键字创建的 String 对象也是不同的对象。

比较 String 对象的引用和内容

比较引用可以使用 == 运算符:

System.out.println(str1 == str2); // 输出 true,因为 str1 和 str2 引用的是同一个字符串对象
System.out.println(str1 == str3); // 输出 false,因为 str1 和 str3 引用的是不同的字符串对象

比较内容可以使用 equals 方法:

System.out.println(str1.equals(str2)); // 输出 true,因为 str1 和 str2 的内容相同
System.out.println(str1.equals(str3)); // 输出 true,因为 str1 和 str3 的内容相同

判断字符串非空

判断字符串非空可以使用 isEmpty 方法或者判断长度是否为 0:

String str = "Hello";
System.out.println(str.isEmpty()); // 输出 false,因为 str 不是空字符串
System.out.println(str.length() == 0); // 输出 false,因为 str 的长度不为 0

总结:

  • 使用字面量创建 String 对象会利用字符串常量池,相同内容的字符串对象指向同一个对象。
  • 使用 new 关键字创建 String 对象会创建新的对象,即使内容相同也是不同的对象。
  • 使用 == 比较引用,使用 equals 比较内容。
  • 使用 isEmpty 或判断长度是否为 0 来判断字符串是否为空。
Java String 对象创建和比较:== vs equals 方法

原文地址: http://www.cveoy.top/t/topic/pY2q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录