String类、StringBuilder类、StringBuffer类的常用方法

//字符串类----String类
//字符串是一个常量,一经定义就不能修改(值、长度)
public class StringLei {
    //如何产生一个字符串
    public void a(){
        //创建一个字符串str1,指向abc
        String str1="abc";
        //创建一个空字符串
        String str2=new String();
        //根据字符数组创建一个字符串
        char[] chr={'a','b','c'};
        String str3=new String(chr);
        //根据字节数组创建一个字符串
        byte[] bytes={97,98,99};
        String str4=new String(bytes);
        //创建了一个字符串,这个字符串是按照abc的副本创建的
        String str5=new String("abc");//两个对象,一个abc,一个str5
        System.out.println(str1);
        System.out.println(str2);
        System.out.println(str3);
        System.out.println(str4);
        System.out.println(str5);
    }

    //非常用构造器
    public void b(){
        char[] chars={97,98,99,100,101,102};
        byte[] bytes={97,98,99,100,101,102};
        String str1=new String(chars,2,3);//从数组下标2开始,取3个元素
        String str2=new String(bytes,1,4);
        System.out.println(str1);
        System.out.println(str2);
    }

    //字符串是常量   这个常量就是那个对象,也就是下面的str  这个对象的值是abc
    public void d(){
        String str="abc";
        System.out.println(str);
        str="bcd";
        System.out.println(str);
    }

    //第一组String的方法
    public void e(){//char charAt(int index)返回下标为index的字符
        String str="abcahdfdhd";
        char chr=str.charAt(4);//返回下标为4的字符数组中的元素值
        System.out.println(chr);//h
        /*str.concat("888888");
        System.out.println(str);//和str一样,没有变化,因为String为常量*/

        //String concat(String xxx),拼接字符串,产生新的字符串,原字符串没变化
        //将指定字符串拼接到目标字符串后,产生了一个新的字符串
        String str1=str.concat("888888");
        System.out.println(str1);

        //boolean endsWith(String xxx) 判断目标字符串是否以指定字符串结尾的,返回boolean类型结果
        boolean b1=str.endsWith("shd.j");
        System.out.println(b1);
        //boolean equals(String xxx) 判断目标字符串和指定字符串值是否相等,返回boolean类型结果
        boolean b2=str.equals("aasdsds");
        //boolean equalsIgnoreCase(String xxx)判断目标字符串和指定字符串值是否相等,返回boolean类型结果,不区分大小写
        boolean b3=str.equalsIgnoreCase("aasdsds");

        //get bytes()
        //将字符串转换成byte数组
        byte[] bytes1=str.getBytes();
        //将字符串按照指定编码集转换成byte数组
        //byte [] bytes2=str.getBytes("utf-8");
        //返回字符串对象在内存中的HashCode
        int hashCode=str.hashCode();
        System.out.println(Arrays.toString(bytes1));
        System.out.println(hashCode);

    }

    //第二组String的方法
    public void  f(){
        String str="sytfusdfaef";
        //在目标字符串中找到字符'a'第一次出现的位置,如果不存在,返回-1
        int index1=str.indexOf('a');
        //从目标字符串中的第六个开始找到字符'a'第一次出现的位置,如果不存在,返回-1
        int index2=str.indexOf('a',5);
        //在目标字符串中找到字符串“ab”第一次出现的位置,如果不存在,返回-1
        int index3=str.indexOf("ab");
        //从目标字符串的第六个开始找到字符串“ab”第一次出现的位置,如果不存在,返回-1
        int index4=str.indexOf("ab",3);
        //找到目标字符串中指定的字符串或者字符串出现的最后一次位置,如果不存在,返回-1
        int index5=str.lastIndexOf('a');
        int index6=str.lastIndexOf('a',4);
        int index7=str.lastIndexOf("af");
        int index8=str.lastIndexOf("af",3);
        System.out.println(index1);
        System.out.println(index2);
        System.out.println(index3);
        System.out.println(index4);
        System.out.println(index5);
        System.out.println(index6);
        System.out.println(index7);
        System.out.println(index8);
    }
    //练习:用户输入邮箱号,判断邮箱是否是合法邮箱
    private Scanner in=new Scanner(System.in);
    public void  test1(){
        System.out.println("请输入邮箱号:");
        String email=in.next();
        int index1=email.indexOf("@");
        int index2=email.indexOf(".");
        if(index1>0&&index1
package xzy0629;
//字符串----StringBuilder:一个线程不安全可变长度的字符序列,但不保证同步
public class StringBuilderLei {
    // 如何产生一个StringBuilder
    public void a(){
        // 空的字符序列
        StringBuilder str1 = new StringBuilder();
        // 值为abc的字符串
        StringBuilder str2 = new StringBuilder("abc");
        System.out.println(str1);
        System.out.println(str2);
    }
    // StringBuilder的常用方法
    public void b(){
        StringBuilder str = new StringBuilder("sgfsjdgff");
        str.append("aa");// 将aa字符串追加到目标字符串的结尾
        //str.insert(3,"yy");// 将yy字符串插入到目标字符串的指定位置
        //str.delete(3,6);// 删除目标字符串中第四个到第六个的内容,左闭右开
        str.reverse(); //反转目标字符串
        System.out.println(str);
        String str1 = str.toString();//将StringBuilder--->String
    }
    public static void main(String[] args) {
        new StringBuilderLei().b();

        String str1 = "";
        String str2 = null;
        String str3;
        String str4 = new String();
        String str5 = " ";
        System.out.println(str1);
        System.out.println(str2);
        System.out.println(str3);
        System.out.println(str4);
    }
/*StringBuffer---线程安全的可变字符串
StringBuilder有的StringBuffer都有,它线程安全是因为它加了一把同步锁
当一个人对字符串操作时,它不会被其他人操作
*/

你可能感兴趣的:(JAVA)