• String源码详解


    一、基本概念。

        1、继承实现关系。因为被final修饰,因此是不可继承的String类,避免被他人继承后修改。实现了三个接口。可序列、可比较,有序。几个String兄弟类

    
    
    

        2、本质就是字符数组,同时,它是不可变的。

    二、成员变量。

         1、字符数组value。访问权限私有,因此String类外具有不可访问特点,因为具有final修饰,因此必须有且仅能初始化一次,而且之后不可变。初始化时机:要么定义时初始化,要么代码块初始化,要么构造方法。这是从JDK1.9开始用byte数组替换原来的char数组。

         2、hash值。默认值为0

         3、编码。默认值为0

         1、字符编码为ISO-8859-1,即LATIN1的值为0。

         1、字符编码UTF16的值为1。

         1、COMPACT_STRINGS的值为true。类加载时就设置为true。

    三、成员方法。

         1、无参构造方法。这是String类的第一个构造方法,类加载的时候会调用。作者也注释说明了是用来实例化代表空字符序列的String对象,但是String具有不可变性,只要实例化一个就一直储存在堆中的常量池中。

         2、字符数组字符串初始化。初始化一个与参数字符串一样的String对象,也是参数字符串的一个拷贝。除非明确地需要一个参数的拷贝,否则这个构造函数是没有必要的,因为String不可变

     

         3、字符数组初始化一个字符串。复制字符数组并转换成字符串,因此,转换之后,原来的字符数组改变对字符串没有任何影响,该字符串已经独立。入参的value是一个 char类型的数组,此方法可以生成一个代表该数组的String对象,相当于复制了这个入参的数组,之后对于入参数组的修改不会影响新建的String对象。

         

         4、字符数组,之后对字符数组操作不影响该字符串。如果offset小于0或者count小于0或者count大于length-offset,则抛出异常,获取字符数组的第offset开始的count个字符,然后转换成字符串。参数1,value---->char类型的数组,参数2,offset---->开始的位置(0.1.2....),参数3,count---->长度(生成String对象的长度)。

     

         5、字符数组value。

         1、字符数组value。

     

         1、字符数组value。

     

         1、字符数组value。

     

         1、字符数组value。

     

         1、字符数组value。

     

         1、字符数组value。

     

         1、字符数组value。

     

         1、字符数组value。

    igoodful@qq.com
  • 相关阅读:
    一次select一个socket的测试结果
    一次select多个socket的测试结果
    NFS服务器的工作原理
    静态局部变量
    openstack controller ha测试环境搭建记录(十一)——配置neutron(网络节点)
    openstack controller ha测试环境搭建记录(十)——配置neutron(控制节点)
    openstack controller ha测试环境搭建记录(九)——配置nova(计算节点)
    openstack controller ha测试环境搭建记录(八)——配置nova(控制节点)
    openstack controller ha测试环境搭建记录(七)——配置glance
    openstack controller ha测试环境搭建记录(六)——配置keystone
  • 原文地址:https://www.cnblogs.com/igoodful/p/8933360.html
Copyright © 2020-2023  润新知