这两个是String工具类的操作工具,主要涉及到字符串的计算
/* * StringBuffer:字符串缓冲区。 * 作为一个字符容器。 * 特点: * 1,长度可以变化。 * 2,可以对内容通过指定方法进行修改。 * 3,容器对象一般都会具备对容器中的元素进行操作的功能。增删该查。 * 4,缓冲区可以存储不同类型的数据。 * 5,最终缓冲区存储完的数据都会变成字符串。 * * */ String str = "a"+4+'c'; //在内存中的过程。1,创建一个字符串缓冲区容器。2,将要组成字符串的元素先存储起来。3,最后将缓冲区填充数据变成字符串。 str = new StringBuffer().append("a").append(4).append('c').toString();
/* * StringBuffer * 缓冲区可以对数据进行临时存储。 * * 了解缓冲区的常见方法。 * 添加元素: * StringBuffer append(各种类型的数据);追加。 * StringBuffer insert(index,各种类型的数据):指定位置添加。 * */ //1,创建一个缓冲区对象。 StringBuffer sb = new StringBuffer(); //2,追加一个字符串。 sb.append("abc"); //3,插入一个boolean值true。 sb.insert(1, true); //4,删除字符。 // sb.delete(1, 4); //5,修改字符。 sb.replace(1, 5, "false"); // sb.setLength(20); sb.reverse(); System.out.println(sb);//println方法会将所有要打印的数据先转成字符串在输出。对于对象会自动调用toString方法。 /* * 字符串缓冲区中维护了一个"可变长度的数组" * 解释:其实就是超出内部数组长度后,新建数组长度要是原数组的1.X倍数。 * 并将原数组的数据复制到新数组中,并将新的元素也添加到新数组中。 * */
package cn.itcast.stringbuffer.demo; public class StringBufferTest { /** * @param args */ public static void main(String[] args) { /* * 1,通过缓冲区,将要打印的矩形组成元素*进行存储后,一次性返回。并输出。 * * 2,将int数组的元素转成字符串。格式为:[34,12,67] * * 什么时候用字符串缓冲区。 * 数据很多,个数无所谓确定,类型无所谓确定,只要最后都转成字符串。 * 就使用StringBuffer这个容器。 * 使用的局限性:1,必须最终转成字符串。 * 2,无法对存储进来的元素进行单独操作。因为存储进来的元素都变成字符串。 * {"abc","haha"} StringBuffer sb = new StringBuffer("abc");sb.append("haha")---> "abchaha"; */ StringBuffer buf1 = new StringBuffer("hello"); StringBuffer buf2 = new StringBuffer("java"); test(buf1, buf2); System.out.println(buf1+"...."+buf2); // String rec = draw(8, 5); // System.out.println(rec); int[] arr = {34,12,67,43,29}; // String s = toString(arr); String s = toString2(arr); System.out.println(s); } public static void test(StringBuffer buf1, StringBuffer buf2) { buf1.append(buf2); buf1 = buf2; } /* * 画矩形的功能。 将需要组成矩形的元素进行临时存储。 */ public static String draw(int row, int col) { // 定义一个临时容器。 StringBuffer sb = new StringBuffer(); for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { sb.append("*"); } sb.append(" "); } return sb.toString(); } /** * int数组转成字符串,通过StringBuffer */ public static String toString2(int[] arr){ StringBuffer sb = new StringBuffer(); sb.append("["); for (int i = 0; i < arr.length; i++) { if(i!=arr.length-1){ sb.append(arr[i]+", "); }else{ sb.append(arr[i]+"]"); } } return sb.toString(); } /** * int数组转成字符串。 */ public static String toString(int[] arr) { String str = "["; for (int i = 0; i < arr.length; i++) { if (i != arr.length - 1) { str += arr[i] + ", "; } else { str += arr[i]+"]"; } } return str; } }
/* * JDK1.5以后,出现了StringBuilder和StringBuffer用法一样。 * StringBuffer是线程同步的。 * StringBuilder是线程不同步的。 * 一般可以建议选择StringBuilder。因为速度快。 * * synchronized append(); * * synchronized insert(); * * synchronized delete(); * * */