菜鸟学Java----String&StringBuffer

一、 String

(1) String s1 = "abc";

(2) String s2 = new String("abc");

(1)与(2)与有何不同?两者分别产生了几个对象?

答:“abc”是存在字符串常量区的,当常量区中没有对应的字符串时,就创建相应的字符串。s1和s2都是引用,保存在栈内,当执行new String("abc")操作时,会从字符串常量区拷贝”abc“到堆中,每new一次,就会在堆中产生一个字符串对象。因此,当分别用上述两种方式创建字符串对象引用时,(1)中会在字符串常量区产生一个"abc"对象,然后栈中的s1就会指向它。(2)中会会在字符串常量区产生一个"abc"对象,同时,由于new操作,会在堆内存中复制一份"abc"对象,然后栈内的s2就会指向堆内存的对象,共产生两个对象。

二、StringBuffer

StringBuffer是字符串缓冲区。

是一个容器。
特点:
1,长度是可变化的。
2,可以字节操作多个数据类型。
3,最终会通过toString方法变成字符串。

1,存储。
    StringBuffer append():将指定数据作为参数添加到已有数据结尾处。
    StringBuffer insert(index,数据):可以将数据插入到指定index位置。
2,删除。
    StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。
    StringBuffer deleteCharAt(index):删除指定位置的字符。
3,获取。
    char charAt(int index)
    int indexOf(String str)
    int lastIndexOf(String str)
    int length()
    String substring(int start, int end)
4,修改。
    StringBuffer replace(start,end,string);
    void setCharAt(int index, char ch) ;
5,反转。
    StringBuffer reverse();
6,
    将缓冲区中指定数据存储到指定字符数组中。

    void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 


JDK1.5 版本之后出现了StringBuilder.

StringBuffer是线程同步。
StringBuilder是线程不同步。


建议使用StringBuilder

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值