【Java】StringBuilder类、包装类

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);//abcabc

        sb.reverse();
        System.out.println(sb);//cbacba

        //String和StringBuilder的相互转换toString
        
        //String --> StringBuilder
        String s = "zxc";
        StringBuilder sb2 = new StringBuilder(s);
        sb2.append("vbn");
        //StringBuilder --> String
        String 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);

        //包装类无法直接计算 会自动拆箱转化为基本类型然后计算 最后又自动装箱赋值给num3
        Integer 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 toString
        String 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
    }

猜你喜欢

转载自blog.csdn.net/xd963625627/article/details/105240638
今日推荐