想要将String这个java基础的类吃透,在2019/03/12晚上10点:没有头绪,不知道怎么开头,简单粗暴一点吧,我要将里面的每个方法吃透--------然后再取java-api 上面翻看一遍哪里有偏差http://www.runoob.com/manual/jdk1.6/java/lang/String.html#format(java.util.Locale,%20java.lang.String,%20java.lang.Object...)
- String是一个final类型的类: 那就意味着不能被继承
访问修饰符 | 返回值 | 方法名(参数) | 方法介绍 | 默认值 |
private | final char | value[] | 保存字符串的char数组 | “” |
private | int | hash | 字符串的hash值 | 0 |
public | 构造方法 | String() | 构造方法,设置初始值 value[] = "" | "" |
public | 构造方法 | String(String original) | 构造方法,设置初始值为 传入的String值 original | original |
public | 构造方法 | String(char value[]) | 构造方法,设置初始值为传入的char数组值 | value[] |
public | 构造方法 | String(char value[], int offset, int count ) | 构造方法,设置初始值为传入的char数组的 第offset位开始,第 offset+count 结束,截取的这个字符数组 | value[]部分 |
public | 构造方法 | String(int[] codePoints, int offset, int count) | 构造方法:传入int[] 数组,内部存放的是unicode,最终要被转成字符串, | |
public | 构造方法 | String(byte byte[], int offset, int length, String charsetName) | 创建一个字符串,字符串内容是取传入的byte[]值的第offset位到offset+length位,编码格式是charsetName, | |
。。。 | 。。。 | 。。。 | 省略5个和上一个方法类似操作 byte[] 的构造方法 | |
public | 构造方法 | String(StringBuffer buffer) | 构造方法:将Stringbuffer的内容value[] 拷贝到String 的value[] 中 |
|
public | 构造方法 | String(StringBuilder build) | 构造方法: 将StringBUild的内容copy到String中,没有用上synchronized | |
public | int | length() | 返回字符串的长度 | |
public | boolean | isEmpty() | 判断字符串是否为空,通过length来判断 | |
public | char | charAt(int index) | 返回第index位置的char值 | |
public | int | codePointAt(int index) | 返回第index位置的char的unicode值 | |
public | int | codePointBefore(int index) | 返回第index位置的前一个位置的unicode值 | |
public | int | codePointCount(int beginIndex,int endIndex) | 大部分情况都和length()类似,但是本质上还是有区别 https://blog.youkuaiyun.com/u012425381/article/details/38760179 | |
public | int | offsetByCodePoints(int index, int codePointOffset) | ||
public | void | getChars(char dst[], int dstBegin) | 将String字符串中的字符,放到dst[] 中, 位置是从dst[] 数组的第dstBegin开始 | |
public | void | getChars(int srcBegin. int srcEnd, char dst[], int dstBegin) | 将String字符串从第srcBegin位置开始到srcEnd位置结束的字符插入到dst[] ,位置是从dst[] 的 dstBegin 开始 | |
public | byte[] | getBytes(Charset charset) | 将String转成指定格式charset 的byte[] ,返回 | |
。。。 | 。。。 | 。。。 | 省略一个方法,不传Charset值表示默认utf-8格式返回 | |
public | boolean | equals(Object anObject) | 重写了Object方法,比较2个字符串的内容是否一致 | |
public | boolean | contentEquals(StringBuffer sb) | 判断String的内容是否和传入的StringBUffer的内容一样 | |
public | boolean | contentEquals(CharSequence cs) | 判断String的内容是否和cs的内容一致 | |
public | boolean | equalsIgnoreCase(String anotherString) | 比较2个字符串是否在忽略大小写的情况下一致 | |
public | int | compareTo(String anotherString) | 表示字符串的排序规则,默认是降序排列,比较的是每个字符的Unicode值 | |
public | int | compareToIgnoreCase(String str) | 表示字符串的排序规则,但是忽略大小写 | |
public | boolean | regionMatches(boolean ignoreCase, int toffset, int String other, int ooffset , int len) | 表示比较String 指定某一块区域 是否和 传入的other字符串完全相等,ignoreCase 表示是否忽略大小写 | |
public | boolean | startsWith(String prefix,int toffset) | 判断是否String是以 prefix 开头, toffset表示 String 从头的什么位置开始比较 | |
public | boolean | startWith(String prefix) | 判断String是否以prefix开头,其实调用的也是上面的方法,就是toffset设置成 0 | |
public | boolean | endWith(String suffix) | 判断String 是否以suffix结尾 | |
public | int | hashCode() | 返回字符串的hash值 | |
public | int | indexOf( int ch) | 返回从第一位开始查找,Unicode为 ch的值所在的位置 | |
public | int | lastIndexof(int ch) | 返回 匹配Unicode值 ch 最后一个char 位置 | |
public | int | indexof(String str) | 返回查到的第一个匹配上str的位置 | |
public | int | lastIndexof(String str) | 返回查到的最后一个匹配上str的位置 | |
public | String | substring(int beginIndex) | 切割字符串,从位置beginIndex开始 | |
public | String | substring(int beginIndex, int endIndex) | 切割字符串,从位置beginIndex开始,从endindex结束 | |
public | charSequence | subSequence(int beginIndex, int endIndex) | 切割字符串功能同上,就是返回值charSequence 不同,但是这个返回值是String实现的接口 | |
public | String | concat(String str) | 将字符串str合并到原来的字符串上去,内部其实新new了一个字符串 | |
public | String | replace(char oldchar, char newChar) | 将字符串内所有的oldChar替换成newChar,并且返回替换后的值 | |
public | boolean | matches(String regex) | 正则表达式regex判断是否和该string匹配上 | |
public | boolean | contain(charSequence) | 判断字符串内是否包含了传入的charSequence | |
public | String | replaceFirst(String regex,String replacement) | 替换掉符合正则表达式的第一块字符快,替换成传入的replaceMent | |
public | String | replaceAll(String regex, String replacement) | 替换掉所有符合regex规则的字符快,替换成replacement | |
public | String | replace(CharSequence target,CharSequence replacement) | 替换掉所有target的值,全都换成replacement | |
public | String[] | split(String regex, int limit) | 切割字符串,根据regex的规则切割,返回 切割后的字符数组,切割到第limit个就不再切割后面的字符串整体作为一块 (limit = 0 表示全部切割) | |
。。。 | 。。。 | 。。。 | 下面有几个1.8加入的新方法,让我们来瞅一瞅 | |
public | static string | join(CharSequence delimiter, CharSequence... elements) | 静态方法:拼接CharSequence,涉及到StringJoiner 类(1.8加入),内部的add方法涉及到的下一层是StringBuilder的append,最终返回一个拼接好的CharSequence 然后toString返回 | |
。。。 | ||||
public | String | toLowerCase(Locale locale) | 根据给定的Locale 规则 将字符串转成小写 | |
public | String | toLowerCase() | 根据系统默认的规则将字符串转成小写 | |
public | String | toUpperCase(Locale locale) | 根据给定的Locale 规则 将字符串转成大写 | |
public | String | toUpperCase() | 根据系统默认的规则,将字符串转成大写 | |
public | String | trim() | 去除掉字符串首尾的空格 | |
public | String | toString | 返回自己 | |
public | char[] | toCharArray() | 返回字符串的char[] 值 | |
public | static String | format(String format, Object...args) | 使用指定的格式字符串和参数返回一个格式化字符串。 | |
。。。 | 。。。 | 。。。 | 这里其实还有几个format的方法,可以自行领悟 | |
接下来就是几个比较常用的static方法了 | ||||
public | static String | valueOf(Object obj) | 这里会去调用obj的toString()方法来返回具体信息 | |
valueOf(char data[]) | A | |||
valueOf(char data[], int offset, int count) | B | |||
copyValueOf(char data[], int offset, int count) | C 我看实现体 B 和 C 是一模一样的 | |||
copyValueOf(char data[]) | D 实现体 A 和 D 是一模一样的 | |||
... | 再有就是一些基本数据类型的valueOf | |||
public | native String | intern() | 调用本地方法,返回的是String在内存中指向的地址对象 |