------- android培训、java培训、期待与您交流! ----------
StringBuffer
StringBuffer是字符串缓冲区,是一个容器。
具有的功能:
1. 存储
StringBuffer append():将指定的数据作为参数添加到已有数据的结尾处。
为什么要在这里使用返回一个StringBuffer呢?
当我们这样调用的时候
StringBuffer sb = new StringBuffer();
StringBuffer sb1 = sb.append(32);
其实sb和sb1指向同一地址空间。
返回一个StringBuffer的原因在于,当我们想再次追加一个数据的时候。
直接可以类似这样的调用:
sb1.append("a").append("n").append("ddd");
这叫做方法调用链。操作的都是同一个对象。
当我们想在这个缓冲区任何一个地方添加数据的时候。不使用append方法
而是使用insert方法。
StringBuffer insert(int offset, 任意类型 d)
将 任意类型 参数的字符串表示形式插入此序列中。
从上述不断添加元素看出来,这个字符串容器的最大特点是:
(1.长度是可以变化的。
(2. 数组也是容器,但是长度是可以变化的。
(3.可以直接添加多种数据类型。
什么时候用到?
当数据类型不确定的时候,个数也不确定的时候。使用它。
2. 删除
StringBuffer delete(int start, int end)
移除此序列的子字符串中的字符。
StringBuffer deleteCharAt(int index)
移除此序列指定位置的 char。
3. 获取
Char charAt(int index)
返回此序列中指定索引处的 char 值。
int indexOf(String str)
返回第一次出现的指定子字符串在该字符串中的索引。
int length()
返回长度(字符数)。
String substring(int start)
返回一个新的 String,它包含此字符序列当前所包含的字符子序列。
4. 修改
修改也就是替换。把原来串中的数据改变。
StringBuffer replace(int start, int end,String str)
使用给定 String 中的字符替换此序列的子字符串中的字符。
voidsetCharAt(int index, char ch)
将给定索引处的字符设置为 ch。
5. 翻转。
StringBufferreverse()
将此字符序列用其反转形式取代。
查看API文档,还有一个StringBuilder
不同之处:
在jdk1.5版本之后出现了StringBuilder,
stringBuilder是线程不同步的。
StringBuffer是线程同步的。
一般使用StringBuilder
如果是单线程程序,使用StringBuffer就使其效率变低。
基本数据类型对象包装类。
由于java面向对象来说,需要将所有数据都变成对象来使用。
类----基本数据类型
Byte ---byte
Short---short
Long---long
Float—float
Character---char
Integer---int
为什么要去定义这些类呢,是因为在这些类中定义了一些和这些数据对应的属性和方法,以方便使用着使用。
基本数据类型对象包装类的最常见作用就是用于基本数据类型和字符串类型之间做转换。
以integer为例来进行说明
1. 基本数据类型转成字符串。
最简单的 基本数据类型+“”;
基本数据类型.toString(基本数据类型)。
Integer.toString(34);
2. 字符串转成基本数据类型。
int a =Integer.parseInt("123");
在web中经常的使用。
也可以使用
Integer it = newInteger("123123");
int a = it.intValue();
来获得这个整数值,比价麻烦、
十进制转成其他进制
TobinaryStirng();
ToHexString();
toOctalString();
其他进制转成十进制
static intparseInt(String s, int radix)
使用第二个参数指定的基数,将字符串参数解析为有符号的整数。
例子
Integer.parseInt(Integer.toHexString(300),16)
先将300转成16进制,然后再将16进制的300转成一个整形。
基本数据类型对象包装类的新特性
Integer a = 123;//自动装箱功能,也就是将基本数据类型先转成一个Integer对象。
int bb = a;//自动拆箱的功能,a变成了一个int类型,赋值给一个int类型的变量。
其实拆箱就使用a.intValue();
特殊之处:
Integer m = 128;
Integer n = 128;
s(m==n);//为false
Integer mm =127;
Integer nn =127;
s(mm==nn);//为false
原因:
因为当数值在byte范围时候,对于新特性来说,如果数值已经存在,则不会开辟新的空间。