String,StringBuffer,StringBuilder类

String用于保存字符串的字符序列

String的关系图

实现了Serializable表明可以串行化,实现了Comparable接口表明两个Sting类对象可以比较。

String类是final类,不能再被继承

String类有属性,private final char value[]; 用于存放字符串内容

value是final类型,不可二次修改,即不能修改指向关系,但是单个字符的内容是可以变化的

创建String对象的方式

直接赋值 String s = "fk";

先从常量池查看是否有"fk" 的数据空间,若有,则直接将s指向该数据空间,无则重新创建然后再指向,最后s指向的是常量池中的空间地址。

调用构造器 String s2 = new String("");

先在堆中创建空间,里面存有value属性,指向了常量池的"fk"空间,若常量池中无''fk''空间。则重新创建,然后通过value指向,即s最终指向堆中的value地址,value又指向常量池中的空间地址。

String类中重写了equals方法,用于判断字符串的值是否相等

intern方法,若常量池已经包含一个等于此String对象的字符串,则返回该常量池的地址(对象),若无,则将此String对象添加到池,并返回地址。

String字符串的特性

String c = "a" +"b"; 常量相加,看常量池

String d = e + f; 变量相加,看堆

String是一个final类,代表不可变的字符序列,有很多常用方法

其中format类似于c语言的printf输出语句

-----------------------------------------------------------

StringBuffer

java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删,其中很多方法与String相同,但StringBuffer是可变长度的,它是一个容器,但他也是一个final类,不能被继承。

StringBuffer的直接父类AbstractBuilder中,有字符数组value[],不是final类型,该数组中存放字符串内容,里面的值可以更改,且不用每次更新地址(相比于String),只有空间不够时候才会更新地址

StringBuffer的构造器

String类型转StringBuffer

String str = "hello";

1:使用构造器 StringBuffer sb = new StringBuffer(str);

2:使用append方法 StringBuffer sb1 = new StringBuffer();  sb1.append(str);

StringBuffer类型转String

StringBuffer sb2 = new StringBuffer("hello");

1:String s = sb2.toString();

2:String s1 = new String(s);

StringBuffer常用方法

StringBuilder也是可变的字符序列,但该类不保证同步,即不是线程安全的,该类被设计用作StringBuffer的一个简单替换,用在字符串缓冲区被单个线程使用时,可以用的话优先采用该类,因为它比StringBuffer更快

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值