JAVA12-String、StringBuffer、StringBuilder的相关知识点

StringBuffer
是提供一个可变字符串的类

//做了十五次new的过程,String类提供的都是值不能修改的字符串
		/*String a="1";
		for (int i = 0; i < 15; i++) {
			a+=i;
			System.out.println(a.hashCode());
		}*/
		
		//StringBuffer提供的是一个可变字符串的对象
		StringBuffer sb=new StringBuffer("0");
		for (int i = 0; i < 15; i++) {
			sb.append(i);
			System.out.println(sb.hashCode());
		}

在这里插入图片描述

StringBuffer类是String的增强类, 比如: 插入 、追加、替换功能更加强大, 比字符串更加节省内存。
字符串缓冲区:使用缓冲区操作字符串要比直接操作字符串效率高
StringBuffer中的常用构造方法:
在这里插入图片描述
常用的成员方法
1.增加

package com.qf;

public class Demo1 {
    public static void main(String[] args) {
   StringBuffer sb1 = new StringBuffer("123");
        System.out.println(sb1);
   StringBuffer sb2 =sb1.append("hello");
        System.out.println(sb1);//123hello
        System.out.println(sb2);//123hello
        System.out.println(sb1==sb2);//ture
        
    }
    //方法链(了解)
		sb1.append("java").append("java").append("java").append("java");
		System.out.println(sb1);
		System.out.println(sb2);

		//插入
		sb1.insert(2,"hhhhhhhh");
		System.out.println(sb1);
}

删除

/*
		 StringBuffer delete(int start, int end) 
		StringBuffer deleteCharAt(int index) 
		*/

		//删除指定区间的字符串(包含start 不包含end)
		sb1.delete(2,3);
		System.out.println(sb1);

		//删除指定位置上的字符
		sb1.deleteCharAt(0);
		System.out.println(sb1);

修改

/*
		 StringBuffer replace(int start, int end, String str) 
		 void setCharAt(int index, char ch) 
		*/
		//替换指定区间的字符串
		sb1.replace(2,5,"nnnnnn");
		System.out.println(sb1);

		//替换指定位置上的字符
		sb1.setCharAt(0,'x');
		System.out.println(sb1);

获取

//和String类中的用法相同
		/*
		indexOf
		lastIndexOf
		charAt
		length
		substring
		*/

反转

// StringBuffer reverse() 
		StringBuffer sb3 = new StringBuffer("my name is zhansan");
		sb3.reverse();
		System.out.println(sb3);

StringBuilder类
StringBuilder类也是字符串缓冲区,类中的方法与StringBuffer类中的方法使用方法一样,区别在于StringBuilder类中的方法都是线程不安全的,而StringBuffer类中的方法都是线程安全的

String,StringBuffer,StringBuild三者之间的区别(面试题常问)
String类提供的是一个字符串不可更改的对象

StringBuffer和StringBuild都用到了缓冲区,而且都提供了字符串可更改的对象

StringBuffer是线程安全的,StringBuild是线程不安全的(因为StringBuffer里面的方法都加了synchronized)
注意:
1.javaBean中字符串类型的变量还是使用String
2.对于一些经常发生修改的变量,尽量设成StringBuffer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值