StringBuffer
字符串缓冲区,容器,面盆理论,
特点: 长度可变;可以直接操作将多种数据类型;通过toString方法变成字符串
StringBuffer sb = new StringBuffer(); StringBuffer sb1 =sb.append("fes"); sop("sb==sb1:"+(sb==sb1));输出结果为:true
==比较的是内存首地址,sb==sb2说明指向同一个缓冲区
StringBuffer被final修饰,所以不能被继承
增删改查
1,存储
StringBuffer append();在尾部添加
StringBuffer insert(index,数据);在指定位置添加
2,删除
StringBuffer delete(start, end);删除缓冲区中数据,包含start不包含end
StringBuffer deleteCharAt(index);删除自定位置的字符
3,获取。
char charAt(int index)
int indexOf(String str)
int lastIndexOf(String str)
int length()
String substring(int start, int end)
4,修改。
StringBuffer replace(start,end,string);头,尾,被替换内容
void setCharAt(int index, char ch) ;替换一个字符,只替换,不返回
5,反转。
StringBuffer reverse();
6,将缓冲区中指定数据存储到指定字符数组中。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
JDK1.5 版本之后出现了一个兼容的APT;StringBuilder.;
StringBuffer是线程同步。 多线程
StringBuilder是线程不同步。 单线程
以后开发,建议使用StringBuilder ;效率更高
升级三个因素:提高效率,简化书写,提高安全性
常见操作示例
class StringTest { public static void sop(String str){ System.out.println(str); } public static void main(String[] args){ //method_add(); //method_dell(); //method_update(); method_6(); } public static void method_6(){ StringBuffer sb= new StringBuffer("abcdefg"); char[] chs = new char[6]; sb.getChars(1,5,chs,2);//将缓冲区指定字符串存到指定数组中的指定位置 for(int x=0;x<chs.length ;x++){ sop("chs["+x+"]="+chs[x]); } } public static void method_update(){//改 StringBuffer sb = new StringBuffer("0123456789abcd"); sb.replace(3, 5, "Hello");//替换 从指定位置到指定位置 包含头不包含尾 sb.setCharAt(2, 'm'); //替换指定角标字符 返回值为void要注意 sop(sb.toString()); } public static void method_dell(){ //删 StringBuffer sb = new StringBuffer("0123456789abcd"); sb.delete(6, 11);//聪6到11,包含头不包含尾 sb.deleteCharAt(1);//删除1角标上字符 sb.delete(0, sb.length());//清空缓冲区 sop(sb.toString()); } public static void method_add(){ //增 StringBuffer sb = new StringBuffer(); sb.append("apppend").append("hello").append("world");//添加在尾部 sb.insert(2," haha ");//插入到指定位置 //StringBuffer sb1 =sb.append("fes"); //sop("sb==sb1:"+(sb==sb1)); sop(sb.toString()); //sop(sb1.toString()); } }
基本数据类型对象包装类
基本数据类型对象包装类。
byte Byte
short short
int Integer
long Long
boolean Boolean
float Float
double Double
char Character
基本数据类型对象包装类的最常见作用,
就是用于基本数据类型和字符串类型之间做转换
基本数据类型转成字符串。
基本数据类型+""
基本数据类型.toString(基本数据类型值);
如: Integer.toString(34);//将34整数变成"34";
字符串转成基本数据类型。parse
xxx a = Xxx.parseXxx(String);
int a = Integer.parseInt("123");
double b = Double.parseDouble("12.23");
boolean b = Boolean.parseBoolean("true");
Integer i = new Integer("123");
int num = i.intValue();
十进制转成其他进制。
toBinaryString();
toHexString();
toOctalString();
其他进制转成十进制。
parseInt(string,radix);
基本数据类型包装类示例
class IntegerDemo { public static void sop(String str) { System.out.println(str); } public static void main(String[] args) { //Integer x = new Integer(4); Integer x = 4;//自动装箱,对象不能为null new Integer(4); x = x+2; //x进行自动拆箱,变成int类型,运算后再将结果装箱赋给x //拆箱原理:x.intValue() Integer a = 128; Integer b = 128; Integer m = 127; Integer n = 127; sop("a==b:"+(a==b));//false 开辟新空间,不是同一个对象 sop("m==n:"+(m==n));//true 新特性:当数值在byte范围内时,如果该数值已经存在,不开辟新空间 } public static void method_trans() //数据类型转换 { int num = Integer.parseInt("123");//将字符串""转换成int型 long x = Long.parseLong("123"); //sop("num="+num); //sop("x="+x); sop(Integer.toBinaryString(60));//将十进制转换成二进制 sop(Integer.toHexString(60));//将十进制转换成16进制 sop(Integer.toOctalString(60));//将十进制转换成八进制 sop("x="+ Integer.parseInt("1111",16) );//将其他进制转换成十进制 } public static void method_equals() //Integer复写了Object类中的equals方法 { Integer x= new Integer ("123"); Integer y= new Integer (123); sop("x==y: "+(x==y)); //是否同一个对象 sop("x.equals(y):"+x.equals(y));//是否相等, } }