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));//是否相等,
}
}