总结一些java中String类常用的方法

最近学了java,把一些能拎出来汇总的部分写成帖子,给自己回顾用。
以下代码和执行结果都是我自己亲自执行的,执行结果是可信的。但描述的文案是自己的理解的,可能会有偏差。如存在问题,欢迎指正,以免误导了他人。
public class StringNormalMethod {
    public static void main(String[] args){
        char[] value = {'0', '1', '2', '3', '4', '5', '6'};
        String str3 = new String("abcdefabc");
        String str4 = new String("abCDEfabc");
        String str5 = new String("abc");
        //1. 用字符数组value创建一个String对象:public String(char[] value)
        String str1 = new String(value);
        System.out.println("1str1"+str1);

        //2. 用字符数组以下标x开始的n个字符创建一个String对象:
        String str2 = new String(value, 2, 4);
        System.out.println("2str2"+str2);

        //3. 获取字符串长度:
        System.out.println("3" + str1 + "的长度:" + str1.length());

        //4. 获取字符串某一位置(下标)的字符:
        System.out.println("4" + str1 + "中下标为5的字符是:" + str1.charAt(5));

        //5. 获取字符串的自传:
        System.out.println("5" + str1 + "[5,length-1]子串:" + str1.substring(5));
        System.out.println("5" + str1 + "[2,5)子串:" + str1.substring(2,5));

        //6-1. 字符串比较:按字典顺序进行大小比较(返回值是【对象-参数】的值)
        System.out.println("6-1" + str4 + "" + str3 + "比较大小:" + str4.compareTo(str3));//返回:-32

        //6-2. 字符串比较:忽略大小写
        System.out.println("6-2" + str4 + "" + str3 + "忽略大小写比较:" + str4.compareToIgnoreCase(str3));

        //6-3. 字符串比较:是否相等。相等true,不等false
        System.out.println("6-3" + str4 + "" + str3 + "比较是否相等" + str4.equals(str3));

        //6-4. 字符串比较:是否相等(忽略大小写)
        System.out.println("6-4" + str4 + "" + str3 + "忽略大小写比较是否相等:" + str4.equalsIgnoreCase(str3));

        //7-1. 查找子串在字符串中的位置:首次出现的位置(下标),没有则返回-1
        System.out.println("7-1" + str5 + "" + str3 + "中首次出现的位置:" + str3.indexOf(str5));
        System.out.println("7-1" + str4 + "" + str3 + "中首次出现的位置:" + str3.indexOf(str4));

        //7-2. 【从后往前】查找子串在字符串中的位置:第一次出现的位置(下标)
        System.out.println("7-2" + str5 + "" + str3 + "中最后一次出现的位置:" + str3.lastIndexOf(str5));

        //7-3. 从字符串的特定位置开始查找子串:首次出现的位置
        System.out.println("7-3" + str5 + "" + str3 + "中从下标2以后首次出现的位置:" + str3.indexOf(str5, 2));

        //7-4. 从字符串的特定位置开始【往前】查找子串,第一次出现的位置:
        System.out.println("7-4" + str5 + "" + str3 + "中从下标4开始【往前】第一次出现的位置:" + str3.lastIndexOf(str5, 4));

        //8. 字符的大小写转换:
        System.out.println("8-1" + str4 + "转换为全部小写后:" + str4.toLowerCase());
        System.out.println("8-1" + str4 + "转换为全部大写后:" + str4.toUpperCase());

        //9. 字符串两端去空格:
        System.out.println("9" + "[  ab  cd  ]去除前后空格后:[" + "  ab cd  ".trim() + "]");

        //10. 将字符串切割成字符串数组:第一个分隔符前面的,即使是空,也存进数组;最后一个分隔符的后面,如果是空,就不存了。

        /*split()中的参数是正则表达式,因此,当分隔符是正则中的通配符时,需要使用\进行转义,"\\"转义后才表示一个"\"
         * 而在string的双引号""中,表示一个\需要"\\"来表示,综上,split的参数如果要表达一个反斜线“\”,则总共需要2×2=4个反斜线。
         * 即:string双引号中的2  ×  每个\在正则中需要2\表示
         *
         * 同理,如果分隔符是*,则split()的参数应为"\\*"
         * */
        String str6 = "==abc====def===hig==";
        System.out.println("10" + str6 + "分隔成数组后:");
        String[] subStringArr = str6.split("==");
        for(int i = 0; i < subStringArr.length; i++){
            System.out.println("subStringArr[" + i + "]" + subStringArr[i]);
        }

        String[] subStringA = "\\ab\\cd\\efg".split("\\\\");
        System.out.println("10\\ab\\cd\\efg分隔成数组后:");
        for(int i = 0; i < subStringA.length; i++){
            System.out.println(subStringA[i]);
        }

        String[] subStringB = "*ab*cd*efg".split("\\*");
        System.out.println("10*ab*cd*efg分隔成数组后:");
        for(int i = 0; i < subStringB.length; i++){
            System.out.println(subStringB[i]);
        }

        //11. 基本类型转换为字符串:
        System.out.println("11" + "[12.30]转换为String类型:" + String.valueOf(12.30));

        //12-1. 替换字符(串):替换所有,不支持正则
        System.out.println("12-1" + str6 + "中的=替换为*后:" + str6.replace('=', '*'));
        System.out.println("12-1" + str6 + "中的==替换为**后:" + str6.replace("==", "**"));

        //12-2. 替换字符串(按正则匹配):替换第一个
        System.out.println("12-2" + str6 + "中的第一个==替换为**后:" + str6.replaceFirst("==", "**"));

        //12-3. 替换字符串(按正则匹配):替换全部
        System.out.println("12-3" + str6 + "中的==替换为**后:" + str6.replaceAll("==", "**"));

        //13. 字符串连接:
        System.out.println("13" + str1 + "后面连接字符串\"sss\"和字符串\"aaa\"" + str1.concat("sss").concat("aaa"));

        //14. 判断字符串的是否以某字符串(String)起始/结尾:也可以指定开头的下标(但不支持指定结尾的下标)
        System.out.println("14-1" + str1 + "是否以\"01\"开头?:" + str1.startsWith("01"));
        System.out.println("14-2" + str1 + "从下标2开始,是否以字符\'2\'开始?:" + str1.startsWith("2",2));
        System.out.println("14-3" + str1 + "是否以\"67\"结尾?:" + str1.endsWith("67"));

        //15. 2个字符串从各自指定的下标开始,比对特定的长度,相等则返回true
        System.out.println("15】从" + str3 + "的下标0开始,从" + str4 + "的下标6开始,比较3个字符,是否相等?:"
                + str3.regionMatches(0,str4,1,3));
        System.out.println("15】从" + str3 + "的下标6开始,从" + str4 + "的下标0开始,忽略大小写比较3个字符,是否相等?:"
                + str3.regionMatches(true,6,str4,0,3));

        //16. 判断字符串中是否包含某字符串:
        System.out.println("16" + str3 + "中是否包含字符串\"abc\"?:" + str3.contains("abc"));

        //17-1. String类转为基本数据类型:Byte,Short,Int,Long,Float,Double
        System.out.println("17-1" + "a123a" + "转换为byte:" + Byte.parseByte("123"));
        System.out.println("17-1" + str1 + "转换为Integer:" + Integer.parseInt(str1));
        System.out.println("17-1" + "a123a" + "转换为Short:" + Short.parseShort("123"));
        System.out.println("17-1" + str1 + "转换为Long:" + Long.parseLong(str1));
        System.out.println("17-1" + str1 + "转换为Float:" + Float.parseFloat(str1));
        System.out.println("17-1" + str1 + "转换为Double:" + Double.parseDouble(str1));

        //17-2. 基本类型转换为String类:
        System.out.println("17-2intlong类型123转换为String    " + String.valueOf(123));
        System.out.println("17-2char类型'a'转换为String         " + String.valueOf('a'));
        System.out.println("17-2floatdouble类型123转换为String" + String.valueOf(123.45));
        System.out.println("17-2boolean类型false转换为String    " + String.valueOf(false));

    }
}

 

以上代码的执行结果如下:

1str10123456

2str22345

30123456的长度:7

40123456中下标为5的字符是:5

50123456[5,length-1]子串:56

50123456[2,5)子串:234

6-1abCDEfabcabcdefabc比较大小:-32

6-2abCDEfabcabcdefabc忽略大小写比较:0

扫描二维码关注公众号,回复: 5134146 查看本文章

6-3abCDEfabcabcdefabc比较是否相等false

6-4abCDEfabcabcdefabc忽略大小写比较是否相等:true

7-1abcabcdefabc中首次出现的位置:0

7-1abCDEfabcabcdefabc中首次出现的位置:-1

7-2abcabcdefabc中最后一次出现的位置:6

7-3abcabcdefabc中从下标2以后首次出现的位置:6

7-4abcabcdefabc中从下标4开始【往前】第一次出现的位置:0

8-1abCDEfabc转换为全部小写后:abcdefabc

8-1abCDEfabc转换为全部大写后:ABCDEFABC

9[  ab  cd  ]去除前后空格后:[ab cd]

10==abc====def===hig==分隔成数组后:

subStringArr[0]

subStringArr[1]abc

subStringArr[2]

subStringArr[3]def

subStringArr[4]=hig

10\ab\cd\efg分隔成数组后:

ab

cd

efg

10*ab*cd*efg分隔成数组后:

ab

cd

efg

11[12.30]转换为String类型:12.3

12-1==abc====def===hig==中的=替换为*后:**abc****def***hig**

12-1==abc====def===hig==中的==替换为**后:**abc****def**=hig**

12-2==abc====def===hig==中的第一个==替换为**后:**abc====def===hig==

12-3==abc====def===hig==中的==替换为**后:**abc****def**=hig**

130123456后面连接字符串"sss"和字符串"aaa"0123456sssaaa

14-10123456是否以"01"开头?:true

14-20123456从下标2开始,是否以字符'2'开始?:true

14-30123456是否以"67"结尾?:false

15】从abcdefabc的下标0开始,从abCDEfabc的下标6开始,比较3个字符,是否相等?:false

15】从abcdefabc的下标6开始,从abCDEfabc的下标0开始,忽略大小写比较3个字符,是否相等?:true

16abcdefabc中是否包含字符串"abc"?:true

17-1a123a转换为byte:123

17-10123456转换为Integer:123456

17-1a123a转换为Short:123

17-10123456转换为Long:123456

17-10123456转换为Float:123456.0

17-10123456转换为Double:123456.0

17-2intlong类型123转换为String    123

17-2char类型'a'转换为String         a

17-2floatdouble类型123转换为String123.45

17-2boolean类型false转换为String    false

猜你喜欢

转载自www.cnblogs.com/jona-test/p/10342120.html