包装类、StringBuilder、StringBuffer、StringJoiner

发布时间 2023-10-06 15:57:47作者: 翻斗花园小美Q

1、怎么将Int类型的包装成对象

  使用Integer的valueOf方法

Integer  a2  ==  Integer.valueOf(12); 

2、自动装箱机制(可以自动把基本数据类型的数据转换成对象)

Integer  a3  =  12; 

  自动拆箱机制(可以自动把包装类型的对象转换成对应的基本数据类型)

int  a4  =  a3; 

3、应用

  泛型和集合不支持基本数据类型,就可以用包装类

// ArrayList<int> list = new ArrayList <>(); 会报错
ArrayList<Integer> list = new ArrayList <>();
list.add(12);    //自动装箱

int rs =  list.get(1);    //自动拆箱

4、包装类的其他常见操作

 (1)把基本的数据类型装换成字符串

Integer a = 23;
String rs1 = Integer.toString(a);   //"23"
System.out.println(rs1 + 1);    //231

另法:

String rs3 =  a + "";
System.out.println(rs3 + 1);    //也能实现字符串拼接

(2)把字符串类型的数值装换成对应的基本数据类型

        String ageStr = "29";
        //int ageI = Integer.parseInt(ageStr); //29
        int ageI = Integer.valueOf(ageStr); //29
        System.out.println(ageI + 1); //30

        String scoreStr = "99.5";
        //double score = Double.parseDouble(scoreStr); //99.5
        double score = Double.valueOf(scoreStr); //99.5
        System.out.println(score + 0.5);        

 

-----------------------------====================================================================================================

1、StringBuilder代表可变字符串对象,相当于是一个容器,它里面装的字符串是可以改变的,就是用来操作字符串的

好处:StringBuilder比String更容易做字符串的修改操作,效率会更高,代码也会更简洁

2、

  使用:

     
StringBuilder s = new StringBuilder("itheima");// s "itheima"
     //1、拼接内容
        s.append(12);
        s.append("黑马");
        s.append("true");
        System.out.println(s); //itheima12黑马true

        //支持链式编程
        s.append(666).append("黑马2").append(666);
        System.out.println(s);//itheima12黑马true666黑马2666

        //2、反转操作
        s.reverse();
        System.out.println(s); //6662马黑。。。

        //3、返回字符串的长度
        System.out.println(s.length()); //24

        //4、把StringBuilder对象又转换成String类型
        String rs = s.toString();
        System.out.println(rs); //6662马黑。。。

好处:

  需求:拼接100万次abc

   (使用String效率低)

        //使用StringBuilder演示
        StringBuilder sb = new StringBuilder();
        for (int i = 1; i <= 1000000; i++) {
            sb.append("abc");
        }
        System.out.println(sb);
                

StringBuffer与Stringbuilder用法是一模一样的,但Stringbuilder是线程不安全的,StringBuffer是线程安全的


3、StringJoiner

  JDK8才开始有的,跟StringBuilder一样,也是用来操作字符串的,也可以看作是一个容器,创建之后里面的内容是可变的

  好处:不仅能提高字符串的操作效率,并且在有些场景下使用它操作字符串,代码会更简洁

  常用方法和常用构造器

   

上述需求用StringJoiner写: