Java学习之StringBuffer
1.类介绍
①线程安全的可变字符串序列,一个类似于String的字符串缓冲区,但是不能修改(就是不能通过加号+连接,String就可以)
②StringBuffer和String类的区别
String是一个可改变的字符序列
StringBuffer是一个可变的字符序列
2.构造方法
StringBuffer() 构造一个没有字符的字符串缓冲区,初始容量为16个字符
StringBuffer(int capacity) 构造一个没有字符的字符串缓冲区和指定初始容量
StringBuffer(CharSequence seq) 构造一个字符串缓冲区,其中包含与指定的 CharSequence相同的字符。
StringBuffer(String str) 构造一个初始化为指定字符串内容的字符串缓冲区。
notes: 从jdk5开始,为该类补充了一个单个线程使用的等价类,即StringBuilder类,通常优先使用StringBuilder类,因为他支持所有相同操作,但是由于它不执行同步,所有速度更快 3.增删,替换翻转,截取() StringBuffer sb = new StringBuffer("abcd"); ①添加 sb.append("str12"); //在末尾添加一个字符串 sb.insert(3,"hhh"); //在指定位置添加指定字符串 ②删除 sb.deleteCharAt(3); //删除指定1位置的字符 并返回本身 sb.delete(1,3); //左闭右开 ③清空缓冲区 sb.delete(0,sb.length()); ④替换 sb.replace(0,3,"bai") // 包含头不包含尾 ⑤翻转 sb.reverse(); ⑥截取 sb.substring(int start) //从指定位置截取到末尾 sb.substring(int start,int end) //从指定位置开始到结束位置,包括开始位置,不包括结束位置 // 截取 返回值不再是StringBuffer而是String 4.StringBuffer --> String String --》 StringBuffer a.通过构造方法 StringBuffer stringBuffer = new StringBuffer("woai"); System.out.println(stringBuffer); // 通过构造方法完成转换成String b.通过append()方法 StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append("woai"); System.out.println(stringBuffer); // 通过append()方法完成转换成String StringBuffer --》 String StringBuffer sb = new StringBuffer("woai1"); a.通过构造方法 String s = new String(sb); // 通过构造方法 System.out.println(s); b.通过toString()方法 String string = sb.toString(); //通过toString()方法 System.out.println("string = " + string); c.通过subString(0,length); String substring = sb.substring(0, sb.length()); System.out.println(substring); 5.数组 --> 字符串 举例: int [] arr = {1,2,3,}; 输出结果: "[1,2,3]" 用StringBuff的功能实现: int[] arr = {1, 2, 3}; StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append("["); for (int i = 0; i < arr.length; i++) { if (i == arr.length - 1) { stringBuffer.append(arr[i]).append("]"); // 使用这样的添加方式会减少垃圾的存在 }else { stringBuffer.append(arr[i]).append(","); } } System.out.println(stringBuffer); 6.字符串翻转 通过StringBuffer进行翻转 7.StringBuffer和StringBuilder区别 StringBuffer是jdk1.0版本的,是线程安全的,效率低的 (对于用户访问量大的bat 保证其稳定性,对于金融要求,保证其稳定,其他都不存在) StringBuilder是jdk1.5版本的,是线程不安全的,效率高的 String和StringBuffer,StringBuilder的区别 String是一个不可变的字符序列 StringBuffer,StringBuilder是可变的字符序列 8.String和StringBuffer作为参数传递 基本数据类型的值传递,不改变其值 引用数据类型的值传递,改变其值 // 因为传递的是内存地址, String s = "heihei"; System.out.println(s); change(s); System.out.println(s); // heihei
System.out.println("------------------");
StringBuffer sb = new StringBuffer(); sb.append("hhhhhh"); change(sb); System.out.println("sb = " + sb); // heiheihhhhhh
9.数组-冒泡,选择,二分排序 (1)冒泡 // 数据元素:{24,69,80,57,13} 相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处 (2)选择 (3)二分排序 10.Arrays类 11.Interger类 12.String --> int 13.Interger面试题
Powers a lot like real estate.Its all about location, location, location.The closer you are to the source,the higher your property value.