Java:String回顾

通用

public class test{
    public static void main(String[] args){
        String s1=new String("abx");
        String s2="abX";

        //内容相等判断
        System.out.println(s1.equals(s2));
        //大小写的字符串相等判断,验证码
        System.out.println(s1.equalsIgnoreCase(s2));

        String s3=s1;
        //s3和s发生时 共用同一内存地址
        //输出true
        System.out.println(s1==s3);
        //修改后使用不同内存地址
        s3="abX";
        //输出false
        System.out.println(s1==s3);

        char x=s1.charAt(2);
        //输出'x'
        System.out.println(x);

        //区分大小写,找不到则返回-1
        System.out.println(s3.indexOf("x"));
        //输出序列从0开始,输出2
        System.out.println(s3.indexOf("X"));
        //输出1
        System.out.println(s3.indexOf("bX"));

        String s4=" x X X x ";

        //输出最后一个匹配的字符串所在位置,输出5
        System.out.println(s4.lastIndexOf("X"));

        //输出"x X X x"
        System.out.println(s4.trim());

        //用第二个参数,替换字符串中的第一个参数,输出"xXXx"
        System.out.println(s4.replace(" ",""));

    }
}

字符串拼接

import com.sun.deploy.util.StringUtils;
import java.util.Arrays;
import java.util.List;

/**
 * @author ppp
 * @date 2019/11/4
 **/
public class JoinString {
    public static  void main(String[] args){
        ////////////////////////////////////////
        //1. 待拼接数组
        ////////////////////////////////////////
        String[] parts={"a","b","c","d","e","f"};

        ////////////////////////////////////////
        //2. 不同的方法
        ////////////////////////////////////////

        ////////////////////////////////////////
        //使用类库
        //2.1 com.sun.deploy.util.StringUtils
        //要求第一个入参是java.util下的类型
        ////////////////////////////////////////
        List partl=Arrays.asList(parts);
        String result1= StringUtils.join(partl,"-");
        System.out.println(result1);
        //输出结果为:"a-b-c-d-e-f"

        ////////////////////////////////////////
        //2.2 自己拼接
        ////////////////////////////////////////
        String result2="";
        for (int i=0;i<parts.length-1;i++){
            result2=result2+parts[i]+"-";
        }
        result2=result2+parts[parts.length-1];
        System.out.println(result2);
        
    }
}

String、StringBuffer和StringBuilder的一些差异

StringBuilder和StringBuffer相较于String:

  1. 赋值操作前两者是浅拷贝
  2. 前两者的值是可以改变的,而String修改值时其实是删除旧的对象,讲修改后的结果放入新的对象中,内存地址已经发生变化了
/**
 * @author ppp
 * @date 2019/11/5
 **/
public class BufferString {

    public static void main(String[] args) {
        /////////////////////////////////////////////
        //BufferString
        System.out.println("*****************BufferString线程安全的*****************");
        /////////////////////////////////////////////
        StringBuffer a = new StringBuffer("pppppp");
        StringBuffer b=a;
        System.out.println(a==b);   //输出结果 true
        b.append("az");
        System.out.println(a);      //输出结果ppppppaz
        System.out.println(b);      //输出结果ppppppaz
        System.out.println(a==b);   //输出结果true
   
        /////////////////////////////////////////////
        //StringBuilder
        System.out.println("*****************StringBuilder线程不安全的,性能略高*****************");
        /////////////////////////////////////////////
        StringBuilder e = new StringBuilder("pppppp");
        StringBuilder f=e;
        System.out.println(e==f);   //输出结果 true
        f.append("az");
        System.out.println(e);      //输出结果ppppppaz
        System.out.println(f);      //输出结果ppppppaz
        System.out.println(e==f);   //输出结果true

        /////////////////////////////////////////////
        //String
        System.out.println("*****************String*****************");
        /////////////////////////////////////////////
        String c = new String("pppppp");
        String d=c;
        System.out.println(c==d);   //输出true
        d = c.concat("az");
        System.out.println(c);      //输出pppppp
        System.out.println(d);      //输出ppppppaz
        System.out.println(c==d);   //输出false
    }
}

StringBuilder相较于和StringBuffer

  1. 后者是进程安全的,后者几乎所有的非静态方法都带有 synchronized 关键字