字符串面试篇 - 京东面试题
String、StringBuffer 与 StringBuilder 区别?
String内容不可变,StringBuffer和StringBuilder内容可变;
StringBuilder非线程安全(单线程使用),String与StringBuffer线程安全(多线程使用);如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。
String为什么不可变?
public final class String implements java.io.Serializable, Comparable<string>, CharSequence { /** The value is used for character storage. */ private final char value[]; /** Cache the hash code for the string */ private int hash; // Default to 0</string>
String 的底层实现是依靠 char[] 数组,既然依靠的是基础类型变量,那么他一定是可变的, String 之所以不可变,是因为 Java 的开发者通过技术实现,隔绝了使用者对 String 的底层数据的操作。
String,是否可以继承,“+”怎样实现?
String不可以继承,因为String被final修饰,而final修饰的类是不能被继承的。String为不可变的,每次String对象做累加时都会创建StringBuilder对象。
// 程序编译期即加载完成对象s1为"ab" String s1 = "a" + "b"; // 这种方式,JVM会先创建一个StringBuilder,然后通过其append方法完成累加操作 String s1 = "a"; String s2 = "b"; String s3 = s1 + s2; // 等效于 String s3 = (new StringBuilder(s1)).append(s2).toString();
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。