0
点赞
收藏
分享

微信扫一扫

【零基础学Java】—StringBuilder类(三十六)

【零基础学Java】—StringBuilder的原理(三十六)

一、String类

  • 字符串是常量,他们的值在创建之后不能更改
  • 字符串的底层是一个被final修饰的数组,不能改变,是一个常量​​private final byte[ ] value;​
  • 进行字符串的相加,内存中会有多个字符串,占用空间多,效率低下
    【零基础学Java】—StringBuilder类(三十六)_生成器

二、StringBuilder类

  • 字符串缓冲区,可以提高字符串的操作效率(看成一个长度可以变化的子字符串)
  • 底层也是一个数组,但是没有被final修饰,可以改变长度​​byte[ ] value=new byte[16 ]​​;
  • ​StringBuilder​​​在内存中始终是一个数组,占用空间少,效率高,如果超出了​​StringBuilder​​​的容量,会自动扩容
    【零基础学Java】—StringBuilder类(三十六)_生成器_02
    【零基础学Java】—StringBuilder类(三十六)_生成器_03

三、StringBuilder的构造方法

​java.lang.StringBuilder​​类:字符串缓冲区,可以提高字符串的效率

构造方法:

  • ​StringBuilder()​​构造方法不带任何字符的字符串生成器,其初始容量为16个字符
  • ​StringBuilder(String str)​​构造一个字符串生成器,并初始化为指定的字符串内容
public class demo07 {
public static void main(String[] args) {
//空参数构造
StringBuilder bu1=new StringBuilder();
System.out.println("bu1:"+bu1);//bu1:

//带字符串的构造方法
StringBuilder bu2=new StringBuilder("abc");
System.out.println("bu2:"+bu2);//bu2:abc
}
}

【零基础学Java】—StringBuilder类(三十六)_intellij-idea_04

四、StringBuffer 方法

【零基础学Java】—StringBuilder类(三十六)_生成器_05

public class RunoobTest{
public static void main(String args[]){
StringBuilder sb = new StringBuilder(10);
sb.append("Runoob..");
System.out.println(sb);
sb.append("!");
System.out.println(sb);
sb.insert(8, "Java");
System.out.println(sb);
sb.delete(5,8);
System.out.println(sb);
}
}

【零基础学Java】—StringBuilder类(三十六)_intellij-idea_06

【零基础学Java】—StringBuilder类(三十六)_intellij-idea_07
【零基础学Java】—StringBuilder类(三十六)_生成器_08
【零基础学Java】—StringBuilder类(三十六)_intellij-idea_09

public class demo08 {
public static void main(String[] args) {
// 创建StringBuilder对象
StringBuilder bu = new StringBuilder();
//使用append方法往StringBuilder添加数据
//StringBuilder bu2=bu.append("abc");//把bu的地址值复制给了bu2
//System.out.println(bu);//abc
// System.out.println(bu2);//abc
//System.out.println(bu==bu2);//true

//使用append方法无需添加返回值
//bu.append("abc");
//bu.append(12);
// bu.append(true);
// bu.append(8.9);
// bu.append('中');
//System.out.println(bu);//abc12true8.9中

// 链式编程:方法返回值可以是一个对象,可以继续调用方法

System.out.println("abc".toUpperCase().toLowerCase().toUpperCase().toLowerCase());

bu.append("abc").append(1).append(true).append('中').append(9.9);//abc1true中9.9
System.out.println(bu);
}

}

【零基础学Java】—StringBuilder类(三十六)_java_10

五、StringBuilder和String可以相互转换

/*
String 》StringBuilder:可以使用StringBuilder的构造方法
StringBuilder(String str)构造一个字符串生成器 并初始化为指定的字符串的内容

StringBuilder 》String:可以使用StringBuilder中的toString方法
*/
public class DemoStringBuilder {
public static void main(String[] args) {
String str="hello";
System.out.println("str:"+str);
StringBuilder letter=new StringBuilder(str);
//往StringBuilder中添加数据
letter.append("world");
System.out.println("bu:"+letter);


//StringBuilder>String
String s=letter.toString();
System.out.println(s);
}
}


举报

相关推荐

0 条评论