Java的StringBuffer类 Li.034
String 与 StringBuffer 区别 StringBuffer 是线程安全的可变字符序列 String 是一个不可变的字符序列 StringBuffer 的构造函数 public class Demo1_Sb { public static void main(String[] args) { 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("hello"); System.out.println(sb3.length()); System.out.println(sb3.capacity()); } } StringBuffer 的append 和 insert 方法 StringBuffer append() 支持int String StringBuffer boolean, 返回本身, StringBuffer insert(int , String) 在指定索引添加int String char等, 返回本身, 有可能会越界 public class Demo2_Sb { public static void main(String[] args) { StringBuffer sb = new StringBuffer(); sb.append(2); System.out.println(sb); sb.append("haihai"); System.out.println(sb); sb.append(true); System.out.println(sb); sb.insert(1,"sss"); System.out.println(sb); } } StringBuffer 的deleteCharAt delete方法 StringBuffer deleteCharAt(int index) 删除指定索引的字符, 返回本身, 可能会越界 StringBuffer delete(int start, int end) 删除从start到end, 返回本身, 可能会越界 public class Demo3_Sb { public static void main(String[] args) { StringBuffer sb = new StringBuffer(); sb.append("Word hen da"); sb.deleteCharAt(10); System.out.println(sb); sb.delete(0,4); System.out.println(sb); } } StringBuffer 的 replace reverse方法 StringBuffer replace(int start, int end, String str) 用户str替换从start到end, 返回本身, 可能越界 StringBuffer reverse() 反转字符串, 返回本身 public class Demo4_StringBuffer { public static void main(String[] args) { StringBuffer sb = new StringBuffer(); sb.append("Hello"); sb.replace(0,1,"Say"); System.out.println(sb); sb.reverse(); System.out.println(sb); } } StringBuffer 的substring方法 String substring(int start) 从索引start开始向后截取, 返回新的String( 不再是StringBuffer本身了 ) String substring(int start, int end) 从start到end(不包含end)截取, 返回新的String( 不再是StringBuffer本身了 ) public class Demo5_StringBuffer { public static void main(String[] args) { StringBuffer sb = new StringBuffer(); sb.append("Hello"); String s = sb.substring(3); System.out.println(sb); System.out.println(s); String s2 = sb.substring(0,2); System.out.println(s2); } } StringBuffer 与 String 转换 String -> StringBuffer 构造方法 通过append()方法 StringBuffer -> String 通过构造方法 通过toString() 通过substring(0,length); public class Demo6_StringBuffer { public static void main(String[] args) { //String -> StringBuffer StringBuffer sb = new StringBuffer("See You Tomorrow"); StringBuffer sb2 = new StringBuffer(); sb2.append("HaHa"); // StringBuffer -> String StringBuffer sb3 = new StringBuffer("F Word"); String s = new String(sb3); String s2 = sb3.toString(); String s3 = sb3.substring(0,sb3.length()); } } 使用 StringBuffer 指定格式重新拼接成新的字符串,char[] c = {1,2,3}, 转换成[1, 2, 3] 使用 StringBuffer 中的方法 public class Demo7_StringBuffer { public static void main(String[] args) { int [] arr = {1,2,3}; StringBuffer sb = new StringBuffer(); if( arr.length <= 1){ sb = sb.append("[").append(sb).append("]"); }else if ( arr.length > 1 ){ for (int i=0; i<arr.length; i++) { if( 0 == i ){ sb = sb.append("[").append(arr[i]); } else if ( i > 0 && i != (arr.length-1)){ sb = sb.append(", ").append(arr[i]); } else if( i == arr.length-1) { sb = sb.append(", ").append(arr[i]).append("]"); } } } System.out.println(sb); } } StringBuffer 作为参数传递 和 String 作为参数传递 基本数据类型传递, 不改变其值. 引用数据类型传递改变其值 StringBuffer 作为参数传递 String 作为参数传递 public class Demo8_StringBuffer { public static void main(String[] args) { String s = "Hello"; System.out.println(s); change(s); System.out.println(s); StringBuffer sb = new StringBuffer(s); System.out.println(sb); change(sb); System.out.println(sb); } public static void change(String s){ s = s + "hello"; return ; } public static void change(StringBuffer sb){ sb.append(" Wrold!"); } } 冒泡排序 public class Demo9_StringBuffer { public static void main(String[] args) { int [] arr = {1, 100, 200, 30, 1, 0}; int temp = 0; sortArray(arr); printArray(arr); } public static int[] sortArray(int [] array){ int temp = 0; for (int i=0;i<array.length-1;i++){ for(int j=array.length-1;j > i;j--){ if(array[j] < array[j-1]){ temp = array[j]; array[j] = array[j-1]; array[j - 1] = temp; } } } return array; } public static void printArray(int [] array){ for (int i=0;i<array.length;i++){ System.out.println(array[i]); } } } 选择冒泡排序 public class Demo2_SortArray { public static void main(String[] args) { int [] arr = { 1,22, 30,3, 100}; selectArray(arr); printArray(arr); } public static int[] selectArray(int [] arr){ for (int i=0;i<arr.length;i++){ for (int j=i;j<arr.length;j++){ if(arr[i] > arr[j]) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } return arr; } public static void printArray(int [] array){ for (int i=0;i<array.length;i++){ System.out.println(array[i]); } } } 二分查找 public static int search(int [] arr, int t){ int index = -1; int min = 0; int max = arr.length; int mid = arr.length/2; int count = 0; while ( count <= Math.log(arr.length)/Math.log(2)){ if(arr[mid] == t){ return mid; } else if (arr[mid] < t ){ min = mid + 1; mid = (min + max)/2; } else if (arr[mid] > t){ max = mid - 1; mid = (min + max)/2; } count ++; } return index; } Array 类的排序 和 二分查找 void sort(int[] a) 排序, 快速排序 int binarySearch(int[] a, int key) 在数组中查找key, 找到返回索引位置, 没找到则返回插入-位置-1 String toString(int[] a) 数组转成String 输出 public class Demo4_SortArray { public static void main(String[] args) { int [] arr = { 15, 100, 1 , 2, 3, 15, 20, 30, 50}; Arrays.sort(arr); System.out.println(Arrays.toString(arr)); int k1 = Arrays.binarySearch(arr, 20); System.out.println(k1); int k2 = Arrays.binarySearch(arr, 200); System.out.println(k2); } } Integer parseInt 方法 字符串和数字转换 inter 最大值 最小值 2 进制 8进制 16进制转换 public class Demo1_Integer { public static void main(String[] args) { int aInt = Integer.parseInt("190"); System.out.println(Integer.toBinaryString(aInt)); System.out.println(Integer.toHexString(aInt)); System.out.println(Integer.toOctalString(aInt)); Integer bInt = new Integer("180"); System.out.println(bInt); System.out.println(bInt.toString()); System.out.println(Integer.MAX_VALUE); System.out.println(Integer.MIN_VALUE); } } int 和 String 转换 public class Demo2_Integer { public static void main(String[] args) { // int -> String int a = 160; String s1 = a + ""; String s2 = String.valueOf(a); Integer i3 = new Integer(a); String s3 = i3.toString(); String s4 = Integer.toString(a); // String -> int String str = "200"; int a1 = Integer.parseInt(str); Integer ig2 = new Integer(str); int a2 = ig2.intValue(); } } Java 基本数据类型自动装箱 和 拆箱 基本数据类型才可以自动装箱 拆箱 Integer Boolean 自动装箱 拆箱时需要判断对象不为 byte范围内-128到127内, 不会创建新的对象, 而是从常量池中获取. public class Demo3_Integer { public static void main(String[] args) { Integer i = 200; System.out.println(i); int a = i + 100; System.out.println(a); Integer a2 = 127; Integer a3 = 127; Integer a4 = 128; Integer a5 = 128; System.out.println(a2 == a3); System.out.println(a4 == a5); System.out.println(a2.equals(a3)); System.out.println(a4.equals(a5)); Integer a7 = new Integer(127); Integer a8 = new Integer(127); System.out.println(a7 == a8); // 自动装箱用的Integer.valueOf方法 Integer a9 = Integer.valueOf(127); Integer a10 = Integer.valueOf(127); System.out.println(a9 == a10); // Integer -> int Integer iObject = Integer.valueOf(3); int a11 = iObject.intValue(); System.out.println(a11); } } // 200 300 T F T T F T 3