String

String

概念:String的底层是一个封装的char[]数组

特点

因为String的底层是char[]数组,所以String的长度不可变

创建实例

String通常有两种创建实例的方式

    String str="aaaa";
    //这种创建方式是在常量池中放置一个常量,创建实例时会先从常量池中获取,若没有则去创建对象
    public static void main(String[] args) {
        String str="aaaa";
        String str1="aaaa";
        System.out.println(str==str1);
    }
	//结果为 true 因为String的这种创建实例的方式,是先从常量池中获取,如果常量池中没有,再去创建一个实例
	//所以上方代码中,str1和str代指的是同一个实例
    String str=new String("aaaa");
	//这种创建方式,每次都是重新创建一个实例
	public static void main(String[] args) {
        String str=new String("aaaa");
        String str1=new String("aaaa");
        System.out.println(str==str1);
    }//结果为 false 因为这两次创建了两个实例,地址值不同

常用方法

length() //获取字符串长度
substring(int strIndex,int endIndex) //截取字符串,前闭后开
indexof() //获取指定字符或字符串的第一次出现的索引位置,从0开始
charat() //获取指定索引位置的字符
lastIndexof() //获取指定字符或字符串最后一次出现的索引位置
split() //将字符串,按照指定字符串分割开 注意 split(String reg) 和split(String reg,-1)的区别
		//https://www.cnblogs.com/planted/p/15182610.html 有介绍其区别
startwith() //判断该字符串是否由指定字符开头
endswith()  //判断该字符串是否由指定字符结尾
trim()      //去除字符串两端的空格

String的连接效率

注意:数值类型使用 "+" 与字符串连接时,结果为字符串类型

多个字符串之间是通过 "+" 进行连接的,但是由于String的底层是char[],长度不可变,所以每次连接,都相当于重建了一个char数组,效率非常低

由于字符串的连接效率较低,所以出现了下方两个类:

StringBuffer和StringBuilder

创建实例:这两个类只能通过new 的方式创建实例

特点:

  1. 这两个类的底层都是封装的char[]数组
  2. 这两个类是可变的字符序列
  3. 默认初始的长度是16,长度不够的话,第一次扩容是(2倍+2),若仍然不够则直接扩容到目标长度
  4. 这两个类是通过append()方法进行字符串连接
  5. StringBuffer线程安全,StringBuilder线程不安全
posted @ 2023-02-16 20:45  杨远  阅读(30)  评论(0编辑  收藏  举报