String源码分析

这篇博客详细分析了Java lang包中的String类源代码,探讨了String系列的类结构,重点在于理解源码实现的思想,字符串类型间的关系以及性能考量。
摘要由CSDN通过智能技术生成

Class About String In  Package Of Java Lang

这篇笔记主要用于分析Java中String系列的源代码。以下是String系列的的类层次结构图。这篇博文主要目的在于分析String系列源码思想、以及String系列类型之间的关系,以及性能等。

第一序  String类型源码解析
String类型是一个final类型,是不允许继承一改变的。
1.持有成员变量
          一直疑惑String字符串类型为什么那么类似于字符数组char[ ],分析源码后将会发现,本质就是字符数组。String类型持有私有访问权限的字符数组。
源码:private final char value [];
都发现String中的字符串是连续不可变的,也正说明该value[ ]数组是final类型。同事Java程序中将类似于“abc”这样的字符串编译为String类型的实例对象,至于这个实现细节有待于进一步学习!
同时String类型实现了Serializable序列化标记接口,所以拥有序列化ID。
源码:private static final long serialVersionUID = -6849794470754667710L;
String类型持有一个整形,作为hash值。
源码: private int hash ;

2.实例构造器
a.无参构造器
  public String() {
       
this . value = new char [0];
    }

b.字符数组作为入参构造器
  public String( char value []) {
       
this . value = Arrays.copyOf( value , value . length );
    }

c.”abc”这样的字符串作为入参构造器
  public String(String original ) {
       
this . value = original . value ;
       
this . hash = original . hash ;
    }

d.整形数组作为入参构造器
  public String( int [] codePoints , int offset , int count ) {
       
if ( offset < 0) {
           
throw new StringIndexOutOfBoundsException( offset );
        }
       
if ( count < 0) {
           
throw new StringIndexOutOfBoundsException( count );
        }
       
// Note: offset or count might be near -1>>>1.
       
if ( offset >
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值