JDK源码——String相关

String

JDK源码中的String类是Java中最常用的类之一,它提供了许多用于处理字符串的方法。以下是一些常用的String类方法:

  1. 构造方法:

    • String():创建一个空字符串。
    • String(char[] value):根据字符数组创建一个新的字符串。
    • String(byte[] bytes, int offset, int length):根据字节数组的一部分创建一个新的字符串。
    • String(String original):根据另一个字符串创建一个新的字符串。
  2. 常用方法:

    • int length():返回字符串的长度。
    • boolean isEmpty():判断字符串是否为空。
    • char charAt(int index):返回指定索引处的字符。
    • int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引。
    • int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引。
    • String substring(int beginIndex):返回一个新字符串,它是此字符串的一个子字符串。
    • String substring(int beginIndex, int endIndex):返回一个新字符串,它是此字符串的一个子字符串。
    • boolean contains(CharSequence s):当且仅当此字符串包含指定的char值序列时,返回true。
    • boolean equals(Object anObject):将此 String 与指定的对象比较。
    • boolean equalsIgnoreCase(String anotherString):将此 String 与另一个 String 比较,不考虑大小写。
    • int compareTo(String anotherString):按字典顺序比较两个字符串。
    • String toLowerCase():将所有在此字符串中的字符都转换为小写。
    • String toUpperCase():将所有在此字符串中的字符都转换为大写。
    • String trim():返回字符串的副本,忽略前导空白和尾部空白。
    • static String valueOf(Object obj):返回一个表示指定的对象的字符串。
  3. 不可变特性:

    • String类是不可变的,这意味着一旦创建了String对象,就不能更改其内容。任何对String的操作都会生成一个新的String对象。

源码阅读

初始化

 private final char value[];

hashCode()和equals()

hashCode源码:

 public int hashCode() {
   
        int h = hash;
        if (h == 0 && value.length > 0) {
   
            char val[] = value;

            for (int i = 0; i < value.length; i++) {
   
                h = 31 * h + val[i];
            }
            hash = h;
        }
        return h;
    }

计算哈希值的方法如下:

  1. 初始化一个整数变量h为0。
  2. 如果h为0且字符串长度大于0,则遍历字符串中的每个字符。
  3. 对于每个字符,将其ASCII码值乘以31的幂(幂的次数等于当前字符的位置减去字符串长度),然后将结果累加到h上。
  4. 最后将计算出的哈希值赋给hash变量并返回。

这种哈希算法可以有效地减少哈希冲突的概率,提高字符串在哈希表中的查找效率。

equals源码:

public boolean equals(Object anObject) {
   
        if (this == anObject) {
   
            return true;
        }
        if (anObject instanceof String) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

庄隐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值