Java中常量池、String赋值与new String有何区别?
- 内容介绍
- 文章标签
- 相关推荐
本文共计483个文字,预计阅读时间需要2分钟。
有人会问一个问题: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分钟。
有人会问一个问题:String A=ABC; String B=new String(ABC); 这两者有什么区别?直接赋值的说法是字符串直接量+直接量,当程序第一次使用某个字符串直接量时,Java会使用常量池来缓存这个字符串。
有人会问一个问题:
String A = "ABC";String B = new String("ABC");
这两者有啥区别?
直接赋值的说法是字符串直接量
当程序第一次使用某个字符串直接量时,Java会使用常量池(constant pool) 来缓存该字符串直接量
如果程序后面再次用到该字符串直接量时,Java会直接使用常量池中存在的字符串直接量
比较方法:
==:比较引用类型比较的是地址值是否相同
equals:比较引用类型默认也是比较地址值是否相同,注意:String类重写了equals()方法,比较的是内容是否相同。

