Java中比较两个字符串==和.equals()区别
在 Java 中,== 和 .equals() 都是用于比较两个字符串是否相等的运算符,== 比较的是两个字符串的引用地址,而 .equals() 比较的是两个字符串的内容。只有当两个字符串变量指向同一个字符串对象时,== 和 .equals() 才会返回相同的结果
参考文档:
1、使用 == 运算符
==
用于比较两个对象的引用或内存地址,而不是比较它们的内容。当使用 ==
来比较两个字符串时,实际上是在检查这两个字符串对象是否指向同一个内存位置。如果两个字符串变量指向同一个字符串常量池中的对象,==
比较将返回 true
。但如果它们指向内存中不同的位置,即使它们包含完全相同的字符序列,==
也会返回 false
。
2、使用 .equals() 方法
.equals() 方法用于比较两个对象的内容是否相等。在 String 类中,.equals()
被重写以比较字符串的内容。当使用 .equals()
比较两个字符串时,它会检查这两个字符串是否具有相同的字符序列。不考虑这两个字符串对象在内存中的位置,只要它们的内容相同,.equals()
就会返回 true
。
3、String str="abc" 和String str = new String("abc")创建字符串区别
String str="abc"创建字符串,如果String常量池中有个字符串,则str就指向"abc"内存象地址,多次声明"abc",内存中只会有一个"abc"。
String str = new String("abc")创建字符串,不管String常量池中是否有个字符串,都会重新分配,然后str指向它。内存中可能会有两个不同内存地址的"abc"。
4、字符串比较
使用 ==
运算符和使用 .equals()
方法对字符串进行比较的区别,代码如下,
public class Main { public static void main(String[] args) { String str1 = new String("Hello"); String str2 = new String("Hello"); String str3 = "Hello"; String str4 = "Hello"; // 使用 == 运算符 System.out.println(str1 == str2); // false,因为 str1 和 str2 指向不同的对象 System.out.println(str3 == str4); // true,因为 str3 和 str4 指向字符串常量池中的同一个对象 // 使用 .equals() 方法 System.out.println(str1.equals(str2)); // true,因为 str1 和 str2 的内容相同 System.out.println(str3.equals(str4)); // true,因为 str3 和 str4 的内容相同 } }
参考文档:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2023-01-31 Python Pillow(PIL) ImageFilter和ImageColor的使用