String类概述:

*String类概述:

​ 字符串是由多个字符组成的一串数据(字符序列)的字符串常量,java中所有字符串都是String类的实例.

​ 有两种创建形式:

String s = "abcd";
String s = new String("abcd");

第一种:
String s = “abcd”;
先在栈中创建一个对String类的对象引用变量s,然后去字符串常量池中查找有没有"abc", 如果没有则在常量池中添加”abc”, s引用变量指向常量池中的”abc”,如果常量池中有,则直接指向该地址即可,不用重新创建.
第二种:
一概在堆中创建新对象,值存储在堆内存的对象中。
String s = new String(“abcd”);

构造方法
public String()
public String(String str)
public String(byte[] bytes)
public String(char[] value)

String s4="abc";
        byte [] b=s4.getBytes();  //将能够看懂的字符转为字节 数组
        System.out.println(Arrays.toString(b));

        String s5="中国";
        byte [] y=s5.getBytes("utf-8"); //通过utf-8转换 [-28, -72, -83, -27, -101, -67]
        System.out.println(Arrays.toString(y));

        String s6="中国";
        byte [] y1=s6.getBytes("GBK"); //通过GBK转换 [-42, -48, -71, -6]
        System.out.println(Arrays.toString(y1));
        String  ss=new String(y1,"GBK"); //将byte 转为字符串
        System.out.println(ss);

        byte [] c={54,98,99,100};
        String b2=new String(c,"GBK");
        System.out.println(b2);
        String b3=new String(c,"utf-8");
        System.out.println(b3);

重要方法:

//char charAt(int index)      *
        //返回指定索引处的 char 值。
        char c ="中国人".charAt(1);
        System.out.println(c);//国
        //int compareTo(String anotherString)
        //按字典顺序比较两个字符串。
       int result ="abc".compareTo("abc");
        System.out.println(result);//0
        //boolean contains(CharSequence s)  *
        //判断前面的字符串是否包含后面的字符串
        System.out.println("Hkjd0".contains("jdakjs"));//false
        //boolean endsWith(String suffix)
        //测试此字符串是否以指定的后缀结束
        System.out.println("abc".endWith("c"));//true
        //boolean equals(Object anObject)
        //将此字符串与指定的对象比较。
        System.out.println("aswd".equals("das"));//false
        //boolean equalsIgnoreCase(String anotherString)
        //将此 String 与另一个 String 比较,不考虑大小写
        System.out.println("Abc".equalsIgnoreCase("abc"));//true
        //byte[] getBytes()
        //使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中
        byte[] bytes = "abcde".getBytes();
        for (int i = 0; i <bytes.length ; i++) {
            System.out.print(bytes[i]+" ");//97 98 99 100 101
        }
        //int indexOf(String str)
        //返回指定子字符串在此字符串中第一次出现处的索引。
        System.out.println("oraclejavac++".indexOf("java"));//6
        //boolean isEmpty()
        // 当且仅当 length() 为 0 时返回 true。[是否为空字符串]
        String s ="ad";
        System.out.println(s.isEmpty());//false
        //lastIndexOf(int ch)
        //返回指定字符在此字符串中最后一次出现处的索引。
        System.out.println("abcdafff".lastIndexOf("a"));//4
        //String replace(CharSequence target, CharSequence replacement)
        //使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
        //String的父接口就是:CharSequence
        String newString = "httpsda".replace("t","ww");//替换
        System.out.println(newString);//hwwwwpsde
        // String[] split(String regex)
        //根据给定正则表达式的匹配拆分此字符串。
        String[] ymd = "1855-10-11".split("-");
        for (int i = 0; i <ymd.length ; i++) {
            System.out.print(ymd[i]+" ");//1855 10 11
        }
        //boolean startsWith(String prefix)
        // 测试此字符串是否以指定的前缀开始。
        System.out.println("dasdas".startsWith("da"));//true
        //String substring(int beginIndex)
        //截取字符串
        //返回一个新的字符串,它是此字符串的一个子字符串。
        System.out.println("dasdasda".substring(2));//sdasda
        //String substring(int beginIndex, int endIndex)
        //beginIndex开始位置(包括),  endIndex结束位置(不包括)
        //返回一个新字符串,它是此字符串的一个子字符串。
        System.out.println("dasdasda".substring(2,4));//sd
        //char[] toCharArray()
        //将此字符串转换为一个新的字符数组
        char [] chars ="大光头".toCharArray();
        for (int i = 0; i <chars.length; i++) {
            System.out.println(chars[i]);//大 光 头
        }
        // String toLowerCase()
        //使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
        System.out.println("ABC".toLowerCase());//abc
        //String toUpperCase()
        //使用默认语言环境的规则将此 String 中的所有字符都转换为大写。
        System.out.println("abc".toUpperCase());//ABC
        //String trim()
        //返回字符串的副本,忽略前导空白和尾部空白。
        System.out.println(" H k   ".trim());//H K
        //valueOf
        //将“非字符串”转换为字符串
        String s1 = String.valueOf(true);
        System.out.println(s1);

StringBuffer类概述
我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题
线程安全的可变字符序列

构造方法
public StringBuffer()
public StringBuffer(String str)

添加功能
public StringBuffer append(String str)
public StringBuffer insert(int offset,String str)
删除功能
public StringBuffer deleteCharAt(int index)
public StringBuffer delete(int start,int end)
替换功能
public StringBuffer replace(int start,int end,String str)
反转功能
public StringBuffer reverse()

截取功能
public String substring(int start)
public String substring(int start,int end)
截取功能和前面几个功能的不同
返回值类型是String类型,本身没有发生改变

StringBuilder类功能和StringBuffer功能完全一致, StringBuffer是线程安全的

public class StringBufferDemo {

    public static void main(String[] args) {


          //无参的构造方法,底层创建一个长度为16的char数组    char[] value;
          StringBuffer s = new StringBuffer();
          StringBuffer s1 = new StringBuffer(10);
          StringBuffer s2 = new StringBuffer("abc");//长度+16

                    /*
                    大量的字符串拼接,建议使用StringBuffer,不会创建新的对象
                     */
                      s2.append("def");
                      s2.append("hijk");
                      //s2.insert(1, "xxxx");
                      //s2.length();
                      //s2.delete(0, 5);
                      //s2.deleteCharAt(3);
                      //s2.replace(0, 3, "B");
                      //s2.reverse();
                      //s2.substring(2);
                      //s2.substring(2,6);
          System.out.println(s2);

    }
}

*String类StringBuffer类StringBuilder区别

​ String:是字符常量,适用于少量的字符串操作的情况
​ StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
​ StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值