Java中常量池、String赋值与new String有何区别?

2026-05-29 13:292阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计483个文字,预计阅读时间需要2分钟。

Java中常量池、String赋值与new String有何区别?

有人会问一个问题:String A=ABC; String B=new String(ABC); 这两者有什么区别?直接赋值的说法是字符串直接量+直接量,当程序第一次使用某个字符串直接量时,Java会使用常量池来缓存这个字符串。


有人会问一个问题:

String A = "ABC";
String B = new String("ABC");

这两者有啥区别?

直接赋值的说法是字符串直接量
当程序第一次使用某个字符串直接量时,Java会使用常量池(constant pool) 来缓存该字符串直接量
如果程序后面再次用到该字符串直接量时,Java会直接使用常量池中存在的字符串直接量

比较方法:

==:比较引用类型比较的是地址值是否相同
equals:比较引用类型默认也是比较地址值是否相同,注意:String类重写了equals()方法,比较的是内容是否相同。

阅读全文

本文共计483个文字,预计阅读时间需要2分钟。

Java中常量池、String赋值与new String有何区别?

有人会问一个问题:String A=ABC; String B=new String(ABC); 这两者有什么区别?直接赋值的说法是字符串直接量+直接量,当程序第一次使用某个字符串直接量时,Java会使用常量池来缓存这个字符串。


有人会问一个问题:

String A = "ABC";
String B = new String("ABC");

这两者有啥区别?

直接赋值的说法是字符串直接量
当程序第一次使用某个字符串直接量时,Java会使用常量池(constant pool) 来缓存该字符串直接量
如果程序后面再次用到该字符串直接量时,Java会直接使用常量池中存在的字符串直接量

比较方法:

==:比较引用类型比较的是地址值是否相同
equals:比较引用类型默认也是比较地址值是否相同,注意:String类重写了equals()方法,比较的是内容是否相同。

阅读全文