String的原理,面试官问我的时候我也是一脸懵逼 记录一下

String的底层原理

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    /** The value is used for character storage. */
    private final char value[];//我们可以看出最后使用的是一个char[]来接收的

public String(String original) {
    this.value = original.value;//将我们传入的参数放入了value中
    this.hash = original.hash;
}
//截取的是一部分代码,详细的请看源码
  • The Java language provides special support for the string
  • concatenation operator ( + ), and for conversion of
  • other objects to strings. String concatenation is implemented
  • through the {@code StringBuilder}(or {@code StringBuffer})
  • class and its {@code append} method.
    这句话的大概意思就是:字符串的相加使用底层进行了优化是重新new了一个StringBuffer或者StringBuilder他们的append()方法进行字符串的拼接实现的;!在这里插入图片描述在图中我们不难看出
    1:1,2,是生成的两个变量
    2:3,是new了一个StringBuilder
    3:4,使用的是append方法进行的添加操作

总结:

在源码中我们可以看到String是被final修饰的是一个常量一旦赋值时不可在改变的,也不可以被继承;他底层使用的是一个char[]数组来接收数据;

当然我们也可以将两个String进行相加,他是因为底层进行了优化,底层使new StringBuffer() 使用了他的append()方法进行添加;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值