String和StringBuffer

String类 ——不变字符串类

不变字符串:字符串一旦建立,其内容就不能改变,如果要改变字符串的内容,就要生成新的实例。

初始化字符串常用的的两种方式

String str1 = new String("Hello");	//方式1
String str2 = "Hello";		//方式2

String类型的构造方法

//构造一个空的字符串
		String()  
//用一个字符串来生成一个新的字符串,两个字符串相等
		String(String str)
//用数组生成一个新的字符串
		String(char[] ch)
//用数组生成一个从ch[a]开始,长度为b新的字符串,
		String(char[] ch,int a,int b)
//利用StringBuffer对象来创建一个String类型的字符串
        String(StringBuffer str)

String类提供的方法

int length()	//返回字符串的长度
char charAt(int index)	//返回字符串中index位置的字符
String toLowerCase()	//将当前字符串中所有字符转换成小写
String toUpperCase()   //将当前字符串中所有字符转换成大写
String subString(int beginIndex)	//返回从beginIndex开始的子串
String subString(int beginIndex,int endIndex)	//返回从beginIndex开始到endIndex之前的子串
String replace(char oldChar,char newChar)	//将字符串中的所有oldChar转换为newChar
String indexOf(String str)	//返回str在字符串中第一次出现的位置
String concat(String str)	//将str连接在当前字符串的尾部
boolean equals(String str)	//比较str与当前字符串的内容是否相同
boolean equalsIgnoreCase(String str)	//比较str与当前字符串的内容是否相同,并且忽略大小写
int compareTo(String str)	/*比较str和当前字符串的内容,返回差值。(若str和当前字符串相等,返回0;若和当前字符串不相等,则返回第一个不同字符的差值;若str和当前字符串仅长度不同,则返回两者长度的差值)
  • equals()

    判断两个String对象内容是否相同。

  • ==

判断两个String对象是否为同一实例,即在内存中的存储空间是否一致。

        String s1 = "Hello world!";
        String s2 = "Hello world!";
        String s3 = new String("Hello world!");
        System.out.println(s1.equals(s2));      //输出true
        System.out.println(s1.equals(s3));      //输出true
        System.out.println(s1==s2);             //输出true
        System.out.println(s1==s3);             //输出false

StringBuffer类——可变字符串类

  • 可变字符串:字符串中的内容是可以改变的

  • StringBuffer在进行字符串处理时,不会再产生新的实例,而是直接操作原字符串

  • 在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer更加合适

  • 系统为StringBuffer类对象分配内存时,除去字符所占空间外,在另加16个字符大小的缓冲区

StringBuffer s1 = new StringBuffer();	
//创建一个大小为16个字符的空StringBuffer对象

StringBuffer s2 = new StringBuffer(40); 
//创建一个大小为40个字符的空StringBuffer对象

StringBuffer s2 = new StringBuffer("Hello");
//创建一个大小为21个字符的空StringBuffer对象

注意:StringBufferString属于不同的类型,也不能直接进行强制类型转换

StringBuffer对象和String对象之间相互转化

        String s = "abc";
        StringBuffer sb1 = new StringBuffer("123");
        StringBuffer sb2 = new StringBuffer(s);     //String转换为StringBuffer
        String s1 = sb1.toString();     //StringBuffer转换为String

StringBuffer类提供的方法

int length()	//返回StringBuffer对象中字符的长度
int capacity()  //返回StringBuffer对象缓冲区的容量
void ensureCapacity(int size)	//设置StringBuffer对象的缓冲区容量
void setLength(int len)	//设置StringBuffer对象字符长度
StringBuffer append(Object obj)	 //连接StringBuffer对象(如果操作后的字符超出已分配的缓冲区,系统会自动为它分配额外的空间)

注意:String中对字符串的操作不是对原操作串对象本身进行的,而是对新生成的一个原操作串对象的拷贝进行的,其操作的结果不影响原字符串。

​ 相反,StringBuffer中对字符串的连接是对原字符串本身进行的,操作之后原字符串发生改变,变成连接后的字符串。

除了对运算符“ + ”进行重载外,java不支持其他运算符的重载

上一篇:力扣1662题解


下一篇:String StringBuffer StringBuilder