String类系列(就是数组练习)

String(不可变字符序列)

常用方法

equalsIgnoreCase        忽略大小写   System.out.println( "Abcd".equalsIgnoreCse("abcd"));

indexOf                         索引    System.out.println( "Abcd".indexOf("b"));

lastIndexOf                    反向索引  System.out.println( "Abcd".lastIndexOf("b"));

startsWith       以什么开头 System.out.println( "Abcd".startsWith("Ab"));

endsWith        以什么结束 System.out.println( "Abcd".endsWith("cd"));

代码示例:

package cn.String;

public class TestString {
    public static void main(String[]args) {
        String str =new String("abcd");
        String str2=new String("abcd");
        System.out.println(str.equals(str2));  //比较内容是否相等     True
        System.out.println(str2==str);        //false
        
        System.out.println(str.charAt(3)); //查询内容
        
        String str3="def";
        String str4="def";
        System.out.println(str3.equals(str4));  //True
        System.out.println(str3==str4);            //True
        
        System.out.println(str3.indexOf('f'));  //2  查询索引号
        String s=str3.substring(1);                //截取字符串
        System.out.println(s);                  //有指定的打印字符串     
        String str5=str3.replace('e', 's');        //字符串替换
        System.out.println(str5);
        
        String str6="abcde,rrtt,cccee";
        String strArray[]=str6.split(",");   //用逗号使其分开转化为数组
        for(int i=0;i<strArray.length;i++) {
            System.out.println(strArray[i]);
        }
        
        String str7="  aa bb  ";
        System.out.println(str7.length());     //9
        String str77=str7.trim();              //切去没有用的部分
        System.out.println(str77.length());    //5
        
        System.out.println("Abc".equalsIgnoreCase("abc")); //true
        System.out.println("Abcdfb".indexOf('b'));           //1  查看索引号
        System.out.println("Abcdfbeb".lastIndexOf('b'));       //5 查询最后一个
        System.out.println("Abc".startsWith("Ab")); //true   以什么开始
        System.out.println("Abc".endsWith("c")); //true      以什么结束
        
        System.out.println("Abcdfbeb".toLowerCase());  //abcdfbeb 转化为小写   
        System.out.println("Abcdfbeb".toUpperCase());  //ABCDFBEB 转化为大写
        
        String gh="a";
//注意:字符串拼接,一共11个对象,如果String gh=new String("a"),遍历后有12个对象,a是一个new String 也是一个.
        for (int i = 0; i < 10; i++) { 
            gh+=i;
        }
        System.out.println(gh);
        
    }
}

StringBuilder    StringBuffer(可变字符序列)

两者源码几乎一样

不同点:

StringBuider:    线程不安全,效率高

StringBuffer:     线程安全,效率低

我们使用的是局部变量,一般使用StringBuilder

示例:

package cn.stringbuilder;

public class Test01 {
    public static void main(String[] args) {
        StringBuilder sb=new StringBuilder();   //字符数组长度初始为16
        StringBuilder sb1=new StringBuilder(32);   //字符数组长度初始为32
        StringBuilder sb2=new StringBuilder("abcd");//字符数组长度为20  value[]={'a','b','c','d',u0000,u0000...}
        sb2.append("efg");
        sb2.append("sun").append(true).append("哈哈");//通过return this 实现方法链
        System.out.println(sb2);
        
        StringBuilder gh=new StringBuilder('a');  //'a'是一个对象,new StringBuilder是一个对象,总共两个对象.省内存.
        for (int i = 0; i < 100; i++) {
            gh.append(i);
        }
        System.out.println(gh);
        
    }
}

内存优化小总结:

代码对比

第一种 

String gh="a";
//注意:字符串拼接,一共11个对象,如果String gh=new String("a"),遍历后有12个对象,a是一个new String 也是一个.
        for (int i = 0; i < 10; i++) { 
            gh+=i;
        }
        System.out.println(gh);

第二种


        StringBuilder gh=new StringBuilder('a');  //'a'是一个对象,new StringBuilder是一个对象,总共两个对象.省内存.
        for (int i = 0; i < 100; i++) {
            gh.append(i);
        }
        System.out.println(gh);

推荐第二种,省内存。

原文地址:https://www.cnblogs.com/ssxblog/p/11193797.html