Java简单基础复习(六)StringBuffer,Arrays
2020-03-31 19:34
901 查看
StringBuffer
- 线程安全的可变字符序列。一个类似于String的字符缓冲区,但不能修改。
- StringBuffer和String的区别
-
String是一个不可变的字符序列
- StringBuffer是一个可变的字符序列
- 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 + 初始容量
- 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
- 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
- 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
- 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
- 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());
- StringBuffer和StringBuilder的区别
-
两个内的方法都是一样的。
- StringBuffer是JDK1.0版本,是线程安全的,效率低
- StringBuilder是JDK1.5版本的,是线程不安全的,效率高
- 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数组工具类
- 私有构造,方法静态,就可以类名.调用方法
- 重要的方法:
-
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
小知识
- Java中的内存分配以及栈和堆的区别
- A:栈(掌握) 存储局部变量
-
存储new出来的数组或对象
-
和系统相关
-
给CPU使用
- -128到127时byte的取值范围,如果在这个取值范围内,自动装箱就不会新创建对象,而是从常量池中获取,如果超过了byte取值范围就会再重新创建对象
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 黑马程序员---------java 基础知识复习(foreach、Arrays、String、StringBuffer、容器类)
- 黑马程序员--java基础复习之String类StringBuffer及基本数据类型包装类
- Java基础复习之StringBuffer和StringBuilder简要记录
- 黑马程序员——Java基础---StringBuffer、Arrays、包装类
- java基础总结19-java常用API(StringBuffer和Arrays工具类)
- Java基础复习:简单工厂模式
- JAVA基础复习十六-LinkedList、栈和队列数据类型、泛型、增强for循环、可变参数、Arrays工具类
- JAVA基础之数组(Arrays工具类)(Scanner简单使用)(以及调试技巧,文档注释等乱七八糟蛇皮总结)
- java基础复习-工具类Arrays
- java基础复习(一)String、StringBuffer、StringBuilder的区别
- Java基础13-总结StringBuffer,StringBuilder,数组高级,Arrays,Integer,Character
- Java基础复习:Map集合常用类 && Collections类 && Arrays类
- 一些简单的java基础知识复习。
- 2.Java基础复习---String、StringBuffer
- Java基础13-总结StringBuffer,StringBuilder,数组高级,Arrays,Integer,Character
- Java基础13-总结StringBuffer,StringBuilder,数组高级,Arrays,Integer,Character
- JAVA基础复习十三-StringBuffer、数组排序、二分查找、自动拆装箱
- Java基础学习笔记13——(StringBuffer的使用,数组高级,Arrays工具类,Integer和Character等包装类)
- 利用java基础写的一个简单的小游戏,没有UI界面,只是涉及到类的封装,方法的调用,方便日后复习用
- Java基础复习:编写简单的String工具类