Java中的StringBuffer、StringBuilder和包装器类型
1.如何使用StringBuffer类?
答:1).StringBuffer类用于表示可以修改的字符串,称为字符串缓冲对象;
2).使用运算符的字符串将自动创建字符串缓冲对象;
例:str1 + str2的操作,实际上把str1与str2都创建成StringBuffer类对象;
2.StringBuffer类的构造方法有哪些常用的重载方式?
答:StringBuffer() 创建一个空的StringBuffer对象,默认保留16个字符的缓冲空间
StringBuffer(String str) 根据字符串str的内容创建StringBuffer对象,并默认保留16个字符的缓冲空间
StringBuffer(int capacity) 创建一个空的StringBuffer对象,缓冲空间大小由capacity指定
3.StringBuffer类有哪些常用方法?
答:*StringBuffer insert(int index, x x);
将x插入到索引为index的位置,x可以为任何类型的数据
*Int length() ;
获得当前StringBuffer对象的长度
*Void setCharAt(int index,char ch);
使用ch 指定的新值替换index指定的位置上的字符
*String toString();
转换为字符串形式
*StringBuffer reverse();
将当前StringBuffer对象中的字符序列倒置
*StringBuffer delete(int start, int end);
删除当前对象中从start位置开始直到end指定的索引位置的字符序列
*StringBuffer deleteCharAt(int index);
将删除index指定的索引处的字符
*StringBuffer replace(int start, int end, String str);
此方法使用一组字符替换另一组字符。将用替换字符串从start指定的位置开始替换,直到end指定的位置结束
4.String类和StringBuffer类有什么区别?
答:1).在Java中一旦创建了字符串就不能直接更改,这就是字符String的不变性;
2)而StringBuffer类正是针对此问题而提供的字符可变序列;
3).StringBuffer与String是同等的类,唯一区别是可以进行更改;
5.什么是StringBuilder?
答:1).JDK 1.5以后,提供了一个新的字符缓冲区:StringBuilder;
2).提供和StringBuffer相似的API;
3).非线程安全
6.StringBuffer和StringBuilder有什么区别?
答:
|
StringBuffer |
StringBuilder |
线程是否安全 |
安全 |
不安全 |
效率 |
相对低 |
相对高 |
7.如何使用包装器类(Wrapper类)?
答:1).使用基本数据类型声明的变量,如:
int num = 10;
这里的num只是一个变量,而不是对象;
2).在某些必须操作对象的场合,这样的变量就不能使用了;
3).Java提供一系列包装类,以便将基本数据类型当作对象进行操作;
4).在java.lang包中,对于每个基本数据类型都有一个相应的包装类。
8.每个基本数据类型对应的包装器类是什么?
答:
基本数据类型 |
包装类 |
boolean(布尔型) |
Boolean |
byte(字节型) |
Byte |
char(字符型) |
Character |
short(短整型) |
Short |
int(整形) |
Integer |
long(长整型) |
Long |
Float(浮点型) |
Float |
double(双精度浮点型) |
Double |
9.如何使用valueOf方法?举例说明
答:每个包装类都有一个静态的valueOf方法,用于将字符串转换成相应包装类的对象。
public class LangDemo{
public static void main(String[] args){
String str = “120”;
//如果转换失败,将会引发NumberFormatException异常
Byte objByte = Byte.valueOf(str);
Short objShort = Short.valueOf(str);
Integer objInt = Integer.valueOf(str);
Long objLong = Long.valueOf(str);
System.out.println(objByte);
System.out.println(objShort);
System.out.println(objInt);
System.out.println(objLong);
}
}
10.什么是包装类的parseXxx方法?有哪些注意事项?举例说明
答:除了Boolean类和Character类以外,其它的包装类都有静态的parseXxx方法(Xxx指代具体的数据类型),用于将字符串转换成相对应的基本数据类型值。
Public class ParseTest{
public static void main(String[] args){
String str = “116”;
//分别调用各个包装器类的paseXxx方法对字符串进行转换,如果转换失败,将报异常
int i = Integer.paeseInt(str);
short s = Short.parseShort(str);
byte b = Byte.parseShort(str);
long l = Long.parseLong(str);
float f = Float.parseFloat(str);
double d = Double.parseDouble(str);
System.out.println(i);
System.out.println(s);
System.out.println(b);
System.out.println(l);
System.out.println(f);
System.out.println(d);
}
}
11.Character类中有哪些常用方法?举例说明
答:
方法原型 |
说明 |
boolean isLetter(char ch) |
判断字符ch是否为英文字母 |
boolean isDigit(char ch) |
判断字符ch是否为0---9之间的数字 |
boolean isUpperCase(char ch) |
判断字符ch是否为大写形式 |
Boolean isLowerCase(char ch) |
判断字符ch是否为小写形式 |
boolean isWhitespace(char ch) |
判断字符ch是否为空格或换行符 |
注意:以上方法都是静态方法,可以直接通过类名调用,返回值均为boolean类型,如果返回true,否则返回false。
例:
Public class CharacterDemo{
Public static void main(String[] args){
char[] charArray = {‘*’, ‘7’, ‘b’, ‘’, ‘A’};
for(int I = 0;i < charArray.length;i++){
if(Character.isDigit(charArray[i])){
System.out.println(charArray[i]) + “是一个数字。”);
}
if(Character.isLetter(charArray[i])){
System.out.println(charArray[i]) + “是一个字母。”);
}
if(Character.isWhitespace(charArray[i])){
System.out.println(charArray[i]) + “是一个空格。”);
}
if(Character.isLowerCase(charArray[i])){
System.out.println(charArray[i]) + “是小写形式。”);
}
if(Character.isUpperCase(charArray[i])){
System.out.println(charArray[i]) + “是大写形式。”);
}
}
}
}
12.什么是包装类的拆装箱?举例说明
答:JDK5.0以后提供了自动封解箱的操作
Public static void main(String[] args){
int x = 1;
Integer y = x;
y++; //装箱
System.out.println(“y=” +y+ “z=” +z);
}