String类的常用方法

Java String类是灰常常用的一个类,但是天天在用,也没管过。
今天就来看看哪些是常用方法,然后了解一下其大概实现
然后希望达到的效果是:
自从看了我的这个字符串类,让你忘了你的她(他)。

关于字符串函数(split、join、indexOf、substring),这些常用的方法可参考下链接;虽然总结的是js的,但是一样的,join是java 1.8d的

字符串函数(split、join、indexOf、substring)

估计看到那么多代码,新手都不想看了,先给个概览图先,如下:

String类的常用方法

[java] view plain copy
  1. public final class String implements java.io.Serializable, Comparable<String>, CharSequence {  
  2.     /** 
  3.      * The value is used for character storage. 
  4.      */  
  5.     private final char value[];  
  6.     ...  
  7.     ...  
  8.     ...  
  9.     public int length() {  
  10.         return value.length;//字符串长度就是这么来的,数组的长度。这下带不带括号的问题就明了啦.  
  11.     }  
  12.   
  13.     public boolean isEmpty() {  
  14.         return value.length == 0;  
  15.     }  
  16.   
  17.     public char charAt(int index) {  
  18.         if ((index < 0) || (index >= value.length)) {  
  19.             throw new StringIndexOutOfBoundsException(index);  
  20.         }  
  21.         return value[index];  
  22.     }  
  23.       
  24.     //"AAA"和"aaa" 走这个方法的返回结果是false  
  25.     public boolean equals(Object anObject) {  
  26.         //内部实现就是,先判断类型,再判断数组长度,相等了再继续  
  27.         //循环2个数组,逐个比较,不等就返回false,要么最后返回true。  
  28.         //新手注意:ss.equals("AAA");//ss可能为null。  
  29.         //          "AAA".equals(ss);//正确姿势。  
  30.     }  
  31.       
  32.     //"AAA"和"aaa" 走这个方法的返回结果是true  
  33.     public boolean equalsIgnoreCase(String anotherString) {  
  34.         //内部实现判断不等null,长度相等,再继续  
  35.         //也是循环2个数组,先都转大写,比较之后相等,就继续下次循环  
  36.         //要是意外不等,再都转小写,再比较,都失败的话,就不等啦。  
  37.     }  
  38.       
  39.     //是否以prefix 开头  
  40.     public boolean startsWith(String prefix, int toffset) {  
  41.     //都是循环数组挨个比较  
  42.     }  
  43.     public boolean startsWith(String prefix) {  
  44.         return startsWith(prefix, 0);  
  45.     }  
  46.     public boolean endsWith(String suffix) {  
  47.         return startsWith(suffix, value.length - suffix.value.length);  
  48.     }  
  49.   
  50.     //返回在字符串中的位置,也就是数组的下标  
  51.     public int indexOf(String str) {  
  52.         return indexOf(str, 0);  
  53.     }  
  54.     public int lastIndexOf(String str) {  
  55.         return lastIndexOf(str, value.length);  
  56.     }  
  57.   
  58.     //字符串截取  
  59.     public String substring(int beginIndex) {  
  60.     }  
  61.   
  62.     //在原字符串后面串联上个str  
  63.     public String concat(String str) {  
  64.     }  
  65.   
  66.     //替换字符串中的值 oldChar--->newChar  
  67.     public String replace(char oldChar, char newChar) {  
  68.     }  
  69.   
  70.     //是否包含 s  
  71.     public boolean contains(CharSequence s) {  
  72.     }  
  73.   
  74.     //将字符串以regex为标志,截取,返回个数组,不含标志位regex  
  75.     public String[] split(String regex) {  
  76.     }  
  77.   
  78.     //全部转小写  
  79.     public String toLowerCase() {  
  80.         return toLowerCase(Locale.getDefault());  
  81.     }  
  82.   
  83.     //全部转大写  
  84.     public String toUpperCase() {  
  85.         return toUpperCase(Locale.getDefault());  
  86.     }  
  87.   
  88.     //去掉首尾的多余空格  
  89.     public String trim() {  
  90.     }  
  91.   
  92.     //static 直接类调用的方法  
  93.     // 将几个字符串合并成一个返回  
  94.     public static String join(CharSequence delimiter, CharSequence... elements) {  
  95.     } //Java 1.8 才有的这个方法,  
  96.   
  97.     //有很多重载(方法名相同,参数列表不同)  
  98.     //参数可以是几个基本数据类型:int,long,float,double,char,boolean,  
  99.     //基本数据类型是没有方法可言的,所以对应的封装类型才有方法,Integer,Long,Float,Double  
  100.     public static String valueOf(Object obj) {  
  101.         return (obj == null) ? "null" : obj.toString();  
  102.     }  
  103.     public static String valueOf(long l) {  
  104.         return Long.toString(l);  
  105.     }  
  106.     ...  
  107.     public static String valueOf(char c) {  
  108.         char data[] = {c};  
  109.         return new String(data, true);  
  110.     }  
  111.     public static String valueOf(boolean b) {  
  112.         return b ? "true" : "false";  
  113.     }  
  114.       
  115. }     

[java] view plain copy
  1. //正儿八经的String的equal方法如下:就是挨个比较2个数组的值而已。  
  2.    public boolean equals(Object anObject) {  
  3.        if (this == anObject) {  
  4.            return true;  
  5.        }  
  6.        if (anObject instanceof String) {  
  7.            String anotherString = (String)anObject;  
  8.            int n = value.length;  
  9.            if (n == anotherString.value.length) {  
  10.                char v1[] = value;  
  11.                char v2[] = anotherString.value;  
  12.                int i = 0;  
  13.                while (n-- != 0) {  
  14.                    if (v1[i] != v2[i])  
  15.                        return false;  
  16.                    i++;  
  17.                }  
  18.                return true;  
  19.            }  
  20.        }  
  21.        return false;  
  22.    }