自学内容网 自学内容网

Java中的String类用法详解

1.字符串拆分

可以把一个完整的字符串按照规定的分隔符拆分为若干个子字符串

String[] split(String regex)

将字符串全部拆分

String[] split(String regex,int limit)

将字符串以指定的格式拆分,拆分成limit组

实例:字符串的拆分处理

public class Main4 {
    public static void main(String[] args) {
        String str = "Hello world xiaoli ser";
        //按照空格拆分字符串
        String[] result = str.split(" ");
        for(String s : result){
            System.out.println(s);
        }
    }
}

 实例:字符串的部分拆分

public class Main5 {
    public static void main(String[] args) {
        String str = "Hello World xiao li xiansheng";
        String[] result = str.split(" ",3);
        for(String s: result){
            System.out.println(s);
        }
    }
}

".split(regex,limit)"其中的regex是分隔符的形式,limit是要拆分成几段

有一些特殊字符作为分割符无法正确拆分,需要加上转义

比如拆分ip地址

public class Main6 {
    public static void main(String[] args) {
        String s = "192.168.1.1";
        String[] result = s.split("\\.");
        for(String str : result){
            System.out.println(str);
        }
    }
}

注意事项:

1.字符"|","*","+"都得加上转义字符,前面加上"\\"

2.而如果是"\",那么就得写成"\\\\"

3.如果一个字符串中有多个分割符,可以用"|"作为连字符.

实例:多次拆分

public class Main7 {
    public void toString(String[] arr){
        System.out.println(arr);
    }

    public static void main(String[] args) {
        String str = "name=zhangsan&age=18";
        String[] result = str.split("&");
        for(int i = 0;i<result.length;i++){
            String[] temp = result[i].split("=");
            System.out.println(temp[0]+"="+temp[1]);
        }
    }
}

2.字符串截取

方法

String substring(int beginlndex)

从指定索引到结尾

String substring(int begindex,int endindex)

截取部分字符串 

public class Main {
    public static void main(String[] args) {
        String str = "Hello World";
        System.out.println(str.substring(6));
        System.out.println(str.substring(0,4));
        String s1 = str.substring(0,4);
        String s2 = str.substring(6);
        System.out.println(s1+s2);
    }
}

注意事项:

1.字符串中得索引与数组中的下标是一样的,都是从0开始

2.substring(0,5)其中的0与5是[0,5)是前闭后开的也就是说是不包含5的

3.去掉字符串中的左右空格,保留中间的空格

public class Main2 {
    public static void main(String[] args){
        String str = "  hello world  ";
        System.out.println("["+str+"]");
        System.out.println("["+str.trim()+"]");
    }
}

tirm()会去掉首尾的所有空白字符串(空格,换行,制表符等) 

4.字符串大小写转换

public class Main3 {
    public static void main(String[] args) {
        String str = "HeLLo WorlD *&%$ 你好";
        //把所有的大写的英文字符转成小写
        System.out.println(str.toLowerCase());
        //把所有的小写的英文字符转成大写
        System.out.println(str.toUpperCase());
    }
}

5.字符串的不可变性

String是一种不可变的对象,字符串中的内容是不可以被改变的

6.字符串修改

注意的是:尽量避免对String类型直接进行修改,因为String类是不能修改的,所有的修改都会创建新对象,效率非常低下. 

public class Mainstream {
    public static void main(String[] args) {
        String str = "hello";
        str+="world";
        System.out.println(str);
    }
}
public class Mainstream {
    public static void main(String[] args) {
        long startTime = System.currentTimeMillis();
        String s = "hello";
        for(int i = 0;i<10_0000;i++){
            s+=i;
        }
        long endTime = System.currentTimeMillis();
        System.out.println(endTime - startTime);
    }
}
//10万次加法计算时间用了17017ms
public class Main4 {
    public static void main(String[] args) {
        long startTime = System.currentTimeMillis();
        StringBuilder stringBuilder = new StringBuilder("hello");
        for(int i = 0;i<100_0000;i++){
            stringBuilder.append(i);
        }
        long endTime = System.currentTimeMillis();
        long elapsedTime = endTime - startTime;
        System.out.println(elapsedTime);
    }
}
//100万次加法计算时间用了21ms

通过上述代码可以看出对String直接修改,效率是非常慢的,因此我们在修改字符串时可以选择StringBuffer或者StringBuilder

 

 


原文地址:https://blog.csdn.net/lxsxjsj/article/details/144316708

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!