String

来源:互联网 发布:涂色 app 源码 编辑:程序博客网 时间:2024/04/27 03:08

构造方法

public String(String original) {    this.value = original.value;    this.hash = original.hash; }

public int compareTo(String anotherString) {    //自身对象字符串长度len1    int len1 = value.length;    //被比较对象字符串长度len2    int len2 = anotherString.value.length;    //取两个字符串长度的最小值lim    int lim = Math.min(len1, len2);    char v1[] = value;    char v2[] = anotherString.value;    int k = 0;    //从value的第一个字符开始到最小长度lim处为止,如果字符不相等,返回自身(对象不相等处字符-被比较对象不相等字符)    while (k < lim) {        char c1 = v1[k];        char c2 = v2[k];        if (c1 != c2) {            return c1 - c2;        }        k++;    }    //如果前面都相等,则返回(自身长度-被比较对象长度)    return len1 - len2;}

如果在排序中a在b的前面则a.compareTo(b)返回的值小于0,就好像a b是两个整数一样a-b<0;


hash算法

//s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]        for (int i = 0; i < value.length; i++) {            h = 31 * h + val[i];        }

intern()方法

intern方法是Native调用,它的作用是在方法区中的常量池里通过equals方法寻找等值的对象,如果没有找到则在常量池中开辟一片空间存放字符串并返回该对应String的引用,否则直接返回常量池中已存在String对象的引用。

0 0
原创粉丝点击