Java_API之StringBuffer缓冲区
8222 点击·0 回帖
![]() | ![]() | |
![]() | --< java.lang >-- StringBuffer字符串缓冲区:★★★☆
构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符。 特点: 1:可以对字符串内容进行修改。 2:是一个容器。 3:是可变长度的。 4:缓冲区中可以存储任意类型的数据。 5:最终需要变成字符串。 容器通常具备一些固定的方法: 1,添加。 StringBuffer append(data):在缓冲区中追加数据。追加到尾部。 StringBuffer insert(index,data):在指定位置插入数据。 2,删除。 StringBuffer delete(start,end);删除从start至end-1范围的元素 StringBuffer deleteCharAt(index);删除指定位置的元素 //sb.delete(0,sb.length());//清空缓冲区。 3,修改。 StringBuffer replace(start,end,string);将start至end-1替换成string void setCharAt(index,char);替换指定位置的字符 void setLength(len);将原字符串置为指定长度的字符串 4,查找。(查不到返回-1) int indexOf(string); 返回指定子字符串在此字符串中第一次出现处的索引。 int indexOf(string,int fromIndex);从指定位置开始查找字符串 int lastIndexOf(string); 返回指定子字符串在此字符串中最右边出现处的索引。 int lastIndexOf(string,int fromIndex); 从指定的索引开始反向搜索 5,获取子串。 string substring(start); 返回start到结尾的子串 string substring(start,end); 返回start至end-1的子串 6,反转。 StringBuffer reverse();字符串反转 ------------------------------------------------------------------------------------------------ --< java.lang >-- StringBuilder字符串缓冲区:★★★☆ JDK1.5出现StringBuiler;构造一个其中不带字符的字符串生成器,初始容量为 16 个字符。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。 方法和StringBuffer一样; StringBuffer 和 StringBuilder 的区别: StringBuffer线程安全。 StringBuilder线程不安全。 单线程操作,使用StringBuilder 效率高。 多线程操作,使用StringBuffer 安全。 --------------------------------------------------------- StringBuilder sb = new StringBuilder("abcdefg"); sb.append("ak"); //abcdefgak sb.insert(1,"et");//aetbcdefg sb.deleteCharAt(2);//abdefg sb.delete(2,4);//abefg sb.setLength(4);//abcd sb.setCharAt(0,'k');//kbcdefg sb.replace(0,2,"hhhh");//hhhhcdefg //想要使用缓冲区,先要建立对象。 StringBuffer sb = new StringBuffer(); sb.append(12).append("haha");//方法调用链。 String s = "abc"+4+'q'; s = new StringBuffer().append("abc").append(4).append('q').toString(); --------------------------------------------------------- class Test{ public static void main(String[] args) { String s1 = "java"; String s2 = "hello"; method_1(s1,s2); System.out.println(s1+"...."+s2); //java....hello StringBuilder s11 = new StringBuilder("java"); StringBuilder s22 = new StringBuilder("hello"); method_2(s11,s22); System.out.println(s11+"-----"+s22); //javahello-----hello } public static void method_1(String s1,String s2){ s1.replace('a','k'); s1 = s2; } public static void method_2(StringBuilder s1,StringBuilder s2){ s1.append(s2); s1 = s2; } } --------------------------------------------------------- 基本数据类型对象包装类:是按照面向对象思想将基本数据类型封装成了对象。 好处: 1:可以通过对象中的属性和行为操作基本数据。 2:可以实现基本数据类型和字符串之间的转换。 关键字 对应的类名 byte Byte short Short paserShort(numstring); int Integer 静态方法:parseInt(numstring) long Long float Float double Double char Character boolean Boolean 基本数据类型对象包装类:都有 XXX parseXXX 方法 只有一个类型没有parse方法:Character ; -------------------------------------------------------- Integer对象: ★★★☆ 数字格式的字符串转成基本数据类型的方法: 1:将该字符串封装成了Integer对象,并调用对象的方法intValue(); 2:使用Integer.parseInt(numstring):不用建立对象,直接类名调用; 将基本类型转成字符串: 1:Integer中的静态方法 String toString(int); 2:int+""; 将一个十进制整数转成其他进制: 转成二进制:toBinaryString 转成八进制:toOctalString 转成十六进制:toHexString toString(int num,int radix); 将其他进制转换十进制: parseInt(string,radix); //将给定的数转成指定的基数进制; 在jdk1.5版本后,对基本数据类型对象包装类进行升级。在升级中,使用基本数据类型对象包装类可以像使用基本数据类型一样,进行运算。 Integer i = new Integer(4); //1.5版本之前的写法; Integer i = 4; //自动装箱,1.5版本后的写法; i = i + 5; //i对象是不能直接和5相加的,其实底层先将i转成int类型,在和5相加。而转成int类型的操作是隐式的。自动拆箱:拆箱的原理就是i.intValue();i+5运算完是一个int整数。如何赋值给引用类型i呢?其实有对结果进行装箱。 Integer c = 127; Integer d = 127; System.out.println(c = = d); //true //在装箱时,如果数值在byte范围之内,那么数值相同,不会产生新的对象,也就是说多个数值相同的引用指向的是同一个对象。 | |
![]() | ![]() |