zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    phpexcel 相关知识
    php 相关的设置
    linux md5sum 常用用法
    mysql 修改group_concat的限制(row 20000 was cut by group_concat())
    mysql设置最大连接数 max_connections
    Mysql 需要修改的一些配置
    mysql设置远程访问,解决不能通过ip登录的问题(MySQL Error Number 2003,Can't connect to MySQL server )
    mysql 用户权限管理的粗略认识
    文字图片在wps中清晰化方法
    Linux 如何释放Hugepage 占用的内存
  • 原文地址:https://www.cnblogs.com/igoodful/p/8933360.html
Copyright © 2011-2022 走看看