随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。
posts - 398,comments - 0,views - 13万

一、

String类缺少字符串的修改功能,所以提供了StringBuffer类。

StringBuffer要像普通的类那样进行对象的创建,然后进行调用方法的处理;

  - 构造方法:public StringBuffer();
  - 构造方法:public StringBuffer(String s);  // 可以接收初始化的内容   
- 数据追加:public StringBuffer append(数据类型 变量);  //可以是任何类型的数据,并且因为返回值是StringBuffer,所以可以进行无限的追加,append()相当于字符串中的" + "操作
复制代码
package Demo_2_3_StringBuffer;

public class Main {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("Hi!");  // 接收初始化内容的构造方法
        change(sb);
        System.out.println(sb);
    }
    public static void change(StringBuffer tem){  // 改变字符串
        tem.append("HelloWolrd!");
    }
}
复制代码

输出结果:

 

输入可以使用字符串的修改,但是在实际情况中并不会使用得特别多,只是保证在字符串的修改功能上不会出现空缺。

String中字符串的"+"在编译后都变成了StringBuffer的append()方法,并且StringBuffer和String类的对象之间本来就可以互相转换:

  - String类对象变为StringBuffer类可以依靠StringBuffer的构造方法或者使用append()方法;

  - 所有的类对象都可以通过toString()方法转换为String类型。

在StringBuffer类中还提供了一些String类中,没有的方法:

  - 插入数据:public StringBuffer insert(int offset,数据类型b);

复制代码
public class Main {
    public static void main(String[] args) {
        StringBuffer buf = new StringBuffer();
        buf.append(".com").insert(0,"www.").insert(4,"baidu");  // 指定索引位置插入数据
        System.out.println(buf);
    }
}
复制代码

  -  删除指定范围的数据: public StringBuffer delete(int start, int end);

复制代码
public class Main {
    public static void main(String[] args) {
        StringBuffer buf = new StringBuffer();
        buf.append(".com").insert(0,"www.").insert(4,"baidu");  // 指定索引位置插入数据
        System.out.println(buf);
        buf.delete(0,5);    // 删除指定索引范围的数据
        System.out.println(buf);
    }
}
复制代码

  - 内容反转:public StringBuffer reverse( );

复制代码
package Demo_2_3_StringBuffer;

public class Main {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("Hi!");  // 接收初始化内容的构造方法
        change(sb);
        System.out.println(sb);
        StringBuffer buf = new StringBuffer();
        buf.append(".com").insert(0,"www.").insert(4,"baidu");  // 指定索引位置插入数据
        System.out.println(buf);
        buf.delete(0,5);    // 删除指定索引范围的数据
        System.out.println(buf);
        buf.reverse();
        System.out.println(buf);    // 字符串的反转
    }
}
复制代码

在JDK1.5以后出现了一个与StringBuffer类功能相同的类--StringBuilder,那么两者的区别是什么呢?

  StringBuffer类中的方法属于线程安全的,全部使用了synchronized关键字定义,而StringBuilder类属于非线程安全类。

 

面试题:

 

请解释String、StringBuffer、StringBuilder的区别?

  - String类是字符串的首选类型,其最大的特点是内容不允许修改;

      - StringBuffer 与 StringBuilder类的内容允许修改;

 

 

  - StringBuffer是在JDK1.0的时候提供的,属于线程安全类,而StringBuilder是在JDK1.5的时候提供的,属于非线程安全类。

 

posted on   时间完全不够用啊  阅读(204)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示