zoukankan      html  css  js  c++  java
  • String

    hashCode
     public int hashCode() {
            int h = hash;
            if (h == 0 && value.length > 0) {   //hash 默认值为0(此时还没有计算hash) && String中的字节数组有值(使用 String str="avc"; hash初始值为0,使用new String("avc"),构造时计算)
                char val[] = value;
    
                for (int i = 0; i < value.length; i++) {
                    h = 31 * h + val[i];        //为什么使用31? https://www.cnblogs.com/nullllun/p/8350178.html
                }
                hash = h;
            }
            return h;
        }
    toCharArray
       
    public char[] toCharArray() { // Cannot use Arrays.copyOf because of class initialization order issues char result[] = new char[value.length]; System.arraycopy(value, 0, result, 0, value.length); return result; }

      System中的方法 src 原数组 srcPos 从元数据的起始位置开始 dest 目标数组 destPos 目标数组的开始起始位置 length 要copy的数组的长度
    public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
    getChars
        public void getChars(int srcBegin, int srcEnd, char dst[], int dstBegin) {
            if (srcBegin < 0) {
                throw new StringIndexOutOfBoundsException(srcBegin);
            }
            if (srcEnd > value.length) {
                throw new StringIndexOutOfBoundsException(srcEnd);
            }
            if (srcBegin > srcEnd) {
                throw new StringIndexOutOfBoundsException(srcEnd - srcBegin);
            }
            System.arraycopy(value, srcBegin, dst, dstBegin, srcEnd - srcBegin);
        }
    
    
    toCharArray 与 getChars 都是调用了 System.arraycopy
    equals
      重写了方法,先判断==,再判断是否为String类型,再判断长度相等,再判断每一个元素
        public boolean equals(Object anObject) {
            if (this == anObject) {
                return true;
            }
            if (anObject instanceof String) {
                String anotherString = (String) anObject;
                int n = value.length;
                if (n == anotherString.value.length) {
                    char v1[] = value;
                    char v2[] = anotherString.value;
                    int i = 0;
                    while (n-- != 0) {
                        if (v1[i] != v2[i])
                            return false;
                        i++;
                    }
                    return true;
                }
            }
            return false;
        }
    
    
        2.3 length
                字节数组的大小
    
        2.4 isEmpty
        2.5 charAt
        2.6 codePointAt
                对应索引位置的 ascII码表(中文)或Unicode代码点(英文)
    
        2.7 equals
                重写了方法,想判断==,再判断是否为String类型,再判断长度相等,再判断每一个元素
    
        2.8 contentEquals
                参数传  StringBuffer 和 StringBuilder ,对线程不安全的加锁,所以不好用
    
        2.9  equalsIgnoreCase
        2.10 compareTo
                用字符串1跟字符串2作比较,如果字符串1的字典顺序在字符串2前面,则返回一个负数。若在后面,则返回一个正数。若两个字符串的字典顺序相同,则返回0。
                排序的时候使用
        2.11 compareToIgnoreCase
        2.12 regionMatches
                从当前字符串的firstStart位置开始,取一个长度为len的子串;然后从另一个字符串other的otherStart位置开始也取一个长度为len的子串,然后比较这两个子串是否相同,如果这两个子串相同则返回true,否则返回false
        2.13 startsWith(String prefix, int toffset)
                测试源字符串是否从索引toffset处开始以字符串prefix开始
        2.14 indexOf
        2.15 lastIndexOf
        2.16 substring
        2.17 concat
        2.18 replace
        2.19 matches
                该方法用来判断这个字符串是否匹配给定的正则表达式
        2.20 replaceFirst
    
        2.21 replaceAll
        2.22 split
        2.23 join
        2.24 toLowerCase
        2.25 toUpperCase
        2.26 trim
        2.27 toString
        2.28 valueOf
        2.29 format
                字符串格式化  https://segmentfault.com/a/1190000019350486





  • 相关阅读:
    2017第17周四当前工作中困境与挑战思考
    2017第17周三
    2017第17周二
    最小可行产品
    《穷查理宝典》中三条最重要的学习方法
    机场打车有感
    2017第15周五
    2017第15周四
    三条经济学原理帮你做出正确的选择
    Mac通过安装Go2Shell实现“在当前目录打开iTerm2”
  • 原文地址:https://www.cnblogs.com/draymond/p/12885341.html
Copyright © 2011-2022 走看看