1 StringBuilder类
1.1 String的劣势
String类中字符串是常量,创建后不能更改
//底层是final修饰的数组
private final byte[] value;
字符串相加,内存中会存在多个字符串,占用空间多,效率低下
1.2 StringBuilder的优势
StringBuilder是字符串缓冲区,可以提高操作效率,数组长度可变,初始为16
底层是数组,没有被final修饰,所以长度可变
在内存中始终是一个数组,占用空间少,效率高,超出容量会自动扩容
1.3 构造方法、append、reverse、toString方法
public class StringBuilderTest {public static void main(String[] args) {StringBuilder sb = new StringBuilder();System.out.println(sb);//空串sb.append("abc");//返回this 无需接收返回值System.out.println(sb);//abc//链式编程:方法的返回值是对象可以继续调用对象的方法sb.append("a").append("b").append("c");System.out.println(sb);//abcabcsb.reverse();System.out.println(sb);//cbacba//String和StringBuilder的相互转换toString//String --> StringBuilderString s = "zxc";StringBuilder sb2 = new StringBuilder(s);sb2.append("vbn");//StringBuilder --> StringString s2 = sb2.toString();System.out.println(s2);}
}
2 包装类
2.1 概念
基本数据类型的数据没有对应的方法来操作数据,使用包装类包装基本类型的数据,定义一些方法来操作基本类型数据。
类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
2.2 装箱与拆箱
装箱:把基本类型的数据,包装到包装类中
构造方法、静态方法valueOf
拆箱:在包装类中取出基本类型的数据
成员方法intValue
示例:
public class StringBuilderTest {public static void main(String[] args) {int num1 = 1;//装箱//构造方法Integer num2 = new Integer(num1);System.out.println(num2);//1 返回值而非地址说明重写了toString//静态方法Integer num3 = Integer.valueOf(num1);System.out.println(num3);//1 返回值而非地址说明重写了toString//拆箱//成员方法int num4 = num3.intValue();System.out.println(num4);//1}
}
2.3 自动拆箱和装箱
JDK1.5之后,基本类型和包装类型可以自动相互转换。
public class StringBuilderTest {public static void main(String[] args) {Integer num1 = 1;//相当于Integer num2 = new Integer(1);//包装类无法直接计算 会自动拆箱转化为基本类型然后计算 最后又自动装箱赋值给num3Integer num3 = num1 + num2;System.out.println(num3);//2//ArrayList无法直接存取整数 存取包装类ArrayList<Integer> list = new ArrayList<>();//自动装箱list.add(1);//自动拆箱int value = list.get(0);System.out.println(value);//1}
}
3 基本类型和字符串之间的转换
字符串<—>基本类型
除Character外,静态方法parseXxxx可以将字符串参数转换为对应的基本类型。
Xxxx.toString、Xxxx.valueOf、str+**""**可以将Xxxx包装类拆箱后对应的基本类型数据转换为字符串
public static void main(String[] args) {//基本类型--->字符串//法1:基本类型+""√String s1 = 100+"";System.out.println(200+s1);//200100//法2:String toStringString s2 = Integer.toString(100);System.out.println(200+s2);//200100//法3 String valueOf()String s3 = String.valueOf(100);System.out.println(200+s3);//200100//字符串--->基本类型//法1:Xxxx parseXxxx(String str)int num = Integer.parseInt("100");System.out.println(200+num);//300}