关于String类的面试题!

文章目录

关于String类的面试题!

String 类可以继承吗?

不行。String 类使用 final 修饰,无法被继承。


StringStringBuilderStringBuffer的区别?

String:String 的值被创建后不能修改,任何对 String 的修改都会引发新的 String 对象的生成。

StringBuffer:跟 String 类似,但是值可以被修改,使用 synchronized 来保证线程安全。

StringBuilder:StringBuffer 的非线程安全版本,没有使用 synchronized。在单线程中效率比StringBuffer具有更高的性能,推荐优先使用。


String s = new String("xyz"); 创建了几个字符串对象?

如果字符串常量池已经有“xyz”,则是一个;否则会创建两个字符串对象。

当字符创常量池没有 “xyz”,此时会创建如下两个对象:

一个是字符串字面量 “xyz” 所对应的、驻留(intern)在一个全局共享的字符串常量池中的实例,此时该实例也是在堆中,字符串常量池

只放引用。

另一个是通过 new String() 创建并初始化的,内容与"xyz"相同的实例,也是在堆中。


String s = "xyz"String s = new String("xyz") 区别?

两个语句都会先去字符串常量池中检查是否已经存在 “xyz”,如果有则直接使用,如果没有则会在常量池中创建 “xyz” 对象。

另外,String s = new String(“xyz”) 还会通过 new String() 在堆里创建一个内容与 “xyz” 相同的对象实例。

所以前者其实理解为被后者的所包含。


参考博客:

Java 基础高频面试题(2021年最新版)_程序员囧辉-CSDN博客_java面试题

上一篇:在ubuntu下开发stm32f4-discovery


下一篇:ifup 和 ifdown