阅读java源码--String

本文章源码来源JDK1.8

目录

实现方式

构造方法

空构造 "".value

String 为参数

char[] 为参数

字符的UNicode编码数组(int[])

byte[] 不常用

StringBuffer为参数

StringBuilder为参数

内部构造

主要方法

length()

isEmpty()

charAt(int index)

equals(Object anObject) !!!

compareTo(String anotherString)

compareToIgnoreCase(String str)

hashCode()

indexOf

lastIndexOf(int ch)

substring

concat(String str)

replace(char oldChar, char newChar)

contains

split(String regex)

join

toUpper/toLower

trim()

toCharArray()

valueOf



  1. 实现方式

    1. char数组
  2. 构造方法

    1. 空构造 "".value

    2. String 为参数

    3. char[] 为参数

      1. 其中char[]有带偏移量的方法
    4. 字符的UNicode编码数组(int[])

    5. byte[] 不常用

    6. StringBuffer为参数

    7. StringBuilder为参数

      1. 此两种方式常常被忽视,但是实际存在
    8. 内部构造

      1. 此方法只在String内部使用,提高复制数组效率,直接赋值
  3. 主要方法

    1. length()

      1. 返回char数组的长度
    2. isEmpty()

      1. 返回char数组是否为空
    3. charAt(int index)

      1. 判断index是否合法,合法则返回char数组索引所在位置(value[index])
    4. equals(Object anObject) !!!

      1. 判断是否同一对象,是则返回true
      2. 如果对象不属于String类型直接返回false(instanceof)
      3. 遍历两个字符串的char数组,如发现字符串不相等时,返回false
      4. ps:非常重要的方法,不仅是对代码思路有所帮助,同时也是面试重点
    5. compareTo(String anotherString)

      1. 选择两个字符串中长度较短的为限制,遍历
      2. 如果有字符不相等,就返回差值
      3. 遍历完成未返回,返回两个字符串的长度之差
    6. compareToIgnoreCase(String str)

      1. 同5,忽略大小写后字符串比较
    7. hashCode()

      1. 有缓存机制,只计算一次
      2. 字符串的每一个字符参与计算,公式为s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
    8. indexOf

      1. 返回该字符第一次出现的索引(从0开始计数) ps:该参数为字符的整数值
      2. 该参数可为String
    9. lastIndexOf(int ch)

      1. 返回该字符最后一次出现的索引,同8
    10. substring

      1. 截取字符串,如果截取的长度等符合规则,则调用char[]为参数的构造函数创建新的对象
    11. concat(String str)

      1. 将新串接到末尾,如果是空串则返回本身,否则创建新字符串
    12. replace(char oldChar, char newChar)

      1. 替换原字符串中所有的oldChar变为newChar,相等时不操作
      2. 找到第一次出现oldChar的位置i
      3. 新建一个新char数组, 将i前所有字符copy进新数组,i后字符如果是old则替换成new,之后生成新字符串
    13. contains

      1. 调用方法indexOf判断是否在字符串中
    14. split(String regex)

      1. 将字符串分割返回字符串数组
    15. join

      1. 一个静态方法,将字符串数组转成字符串
    16. toUpper/toLower

      1. 转化大小写
    17. trim()

      1. 去除字符串两端空格
      2. 两个指针,从字符串两端逼近,如果指针所在位置为空格则移动指针
      3. 根据两个指针的位置生成字符串
    18. toCharArray()

      1. 返回字符数组
    19. valueOf

      1. 参数为对象或者char[]或者基本数据类型
      2. 对象时 空对象返回“null” ,否则返回对象的toString方法,此处一定注意空对象变成“null”而不是“”或者null
      3. char[]调用char[]的构造函数
      4. 基本型返回对应封装类的toString

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值