Java简单基础复习(六)StringBuffer,Arrays

StringBuffer

  1. 线程安全的可变字符序列。一个类似于String的字符缓冲区,但不能修改。
  2. StringBuffer和String的区别
    • String是一个不可变的字符序列
    • StringBuffer是一个可变的字符序列
  3. StringBuffer类的构造方法
    • public StringBuffer():无参构造方法
    • public StringBuffer(int capacity):指定容量的字符串缓冲区对象
    • public StringBuffer(String str):指定字符串内容的字符串缓冲区对象
		StringBuffer sb=new StringBuffer();
		System.out.println(sb.length());//容器中的字符个数,实际值
		System.out.println(sb.capacity());//容器的初始容量,理论值
		
		StringBuffer sb2=new StringBuffer(10);
		System.out.println(sb2.length());//容器中的字符个数,实际值
		System.out.println(sb2.capacity());//容器的初始容量,理论值
		
		StringBuffer sb3=new StringBuffer("heima");
		System.out.println(sb3.length());//容器中的字符个数,实际值
		System.out.println(sb3.capacity());//容器的初始容量,理论值 字符串的length + 初始容量
  1. StringBuffer的添加功能
    • public StringBuffer append(String str):
      • 可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
    • public StringBuffer insert(int offset,String str):
      • 在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
      • 如果没有指定位置的索引,就会报索引越界异常
    • StringBuffer是字符串缓冲区,当NEW的时候是在堆内创建一个对象,底层让那个是一个长度为16的字符数组当调用添加的方法时,不会再重新创建对象,在不断向原缓冲区添加字符
		StringBuffer sb = new StringBuffer();
		StringBuffer sb2 = sb.append(true);
		StringBuffer sb3 = sb.append("heima");
		StringBuffer sb4 = sb.append(100);
		System.out.println(sb.toString());//trueheima100
		System.out.println(sb2.toString());//trueheima100
		System.out.println(sb3.toString());//trueheima100
		System.out.println(sb4.toString());//trueheima100
		StringBuffer sb = new StringBuffer("1234");
		sb.insert(3,"heima");
		System.out.println(sb);//123heima4
  1. StringBuffer的删除功能
    • public StringBuffer deleteCharAt(int index):
      • 删除指定位置的字符,并返回本身
    • public StringBuffer delete(int start,int end):
      • 删除从指定位置开始指定位置结束的内容,并返回本身
		StringBuffer sb = new StringBuffer();
		sb.append("heima");
		sb.deleteCharAt(4);
		System.out.println(sb);//heim
		sb.delete(0, 2);//删除的时候包含的是头不包含尾
		System.out.println(sb);//im
  1. StringBuffer的替换和反转功能
  • A:StringBuffer的替换功能
    • public StringBuffer replace(int start,int end,String str):
      • 从start开始到end用str替换
		StringBuffer sb = new StringBuffer("heima");
		sb.replace(0, 3, "bai");//替换
		System.out.println(sb);//baima
  • B:StringBuffer的反转功能
    • public StringBuffer reverse():
      • 字符串反转
		StringBuffer sb = new StringBuffer("heima");
		sb.replace(0, 3, "bai");//替换
		System.out.println(sb);//baima
		
		sb.reverse();
		System.out.println(sb);//amiab
  1. StringBuffer的截取功能
    • 注意返回值类型不再是StringBuffer,而是String
    • public String substring(int start):
      • 从指定位置截取到末尾
    • public String substring(int start,int end):
      • 截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
		StringBuffer sb = new StringBuffer("woaiheima");
		String str = sb.substring(4);
		String str2 = sb.substring(4, 7);
		System.out.println(sb);//woaiheima
		System.out.println(str2);//heima
		System.out.println(str);//hei
  1. StringBuffer和String的相互转换
//将string转换成stringbuffer
		StringBuffer sb1 = new StringBuffer("heima");
		System.out.println(sb1);
		StringBuffer sb2 = new StringBuffer();
		sb2.append("heima");
		System.out.println(sb2);
//将StringBuffer转换成String
		StringBuffer sb = new StringBuffer("heima");
		String s1 = new String(sb);
		System.out.println(s1);
		System.out.println(sb.toString());
  1. StringBuffer和StringBuilder的区别
    • 两个内的方法都是一样的。
    • StringBuffer是JDK1.0版本,是线程安全的,效率低
    • StringBuilder是JDK1.5版本的,是线程不安全的,效率高
  2. StringBuffer和String作为参数传递
    • 基本数据类型的值传递,不改变其值
    • 引用数据类型的值传递,改变其值
    • String虽然是引用数据类型,但是它当作参数传递时和基本数据类型一样
      String
	public static void main(String[] args){
		String a = "abc";
		System.out.println(a);//adc
		change(a);
		System.out.println(a);//adc
		
	}
	public static void change(String s) {
		s += "def";
	}

StringBuffer

	public static void main(String[] args){
		StringBuffer b = new StringBuffer("abc");
		System.out.println(b);//abc
		change2(b);
		System.out.println(b);//ancdef
		
	}
	private static void change2(StringBuffer b) {
		b.append("def");
		
	}

Arrays数组工具类

  1. 私有构造,方法静态,就可以类名.调用方法
  2. 重要的方法:
    • public static String toString(int[] a)
    • public static void sort(int[] a)
    • public static int binarySearch(int[] a,int key)(需要在调用前,对数组进行排序)
		//数组转字符串
		int[] arr= {33,22,11,44,66,55};
		System.out.println(Arrays.toString(arr));//[33, 22, 11, 44, 66, 55]
		
		//排序
		Arrays.sort(arr);
		System.out.println(Arrays.toString(arr));//[11, 22, 33, 44, 55, 66]
		
		//查找元素的位置
		int[] arr2= {11,22,33,44,55,66};
		System.out.println(Arrays.binarySearch(arr2, 22));//1

小知识

  1. Java中的内存分配以及栈和堆的区别
  • A:栈(掌握)
    • 存储局部变量
  • B:堆(掌握)
    • 存储new出来的数组或对象
  • C:方法区
  • D:本地方法区
    • 和系统相关
  • E:寄存器
    • 给CPU使用
  1. -128到127时byte的取值范围,如果在这个取值范围内,自动装箱就不会新创建对象,而是从常量池中获取,如果超过了byte取值范围就会再重新创建对象
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值