Java - String

java-String
String

String 表示字符串类型,是由一对双引号括起来的任意长度的字符串序列。字符串不是一个基本类型,而是唯一一个不需要new关键字就可以创建的

字符串的原始类

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
    /** The value is used for character storage. */
    private final char value[];
}

字符串继承关系

image-20220512155531245

  • 字符串中的字符使用Unicode字符编码,一个字符(不区分字母还是汉字)占两个字节

  • 字符串类被final 修饰,表示不能被继承

  • 字符串数据被保存在private final char value[]数组,表示String对象不可被更改

  • 字符串类实现了Serializable 接口,可以串行化

  • 字符串类实现了Comparable接口,可以进行比较

字符串创建的两种不同方式

image-20220514115145518

常用的字符串构造器

String string = new String();

String string = new String(String original);

String string = new String(char[] string);

String string = new String(char[] string,int startIndex,int count);

String string  = new String(byte[] byteString);

字符串常用的函数

StringBuffer和StringBuilder

StringBuffer类继承关系

image-20220513164514796

StringBuilder类继承关系

image-20220513181745009

String是java语言非常基础和重要的类,提供了构造和管理字符串的各种基本逻辑。它是典型的Immutable,被声明成为Immutable类,被声明成为 final class,所有属性也都是 final 的。也由于它的不可变性,类似拼接、裁剪字符串等动作,都会产生新的 String 对象。由于字符串操作的普遍性,所以相关操作的效率往往对应用性能有明显影响。

StringBuffer 是为解决上面提到拼接产生太多中间对象的问题而提供的一个类,我们可以用 append 或者 add 方法,把字符串添加到已有序列的末尾或者指定位置。StringBuffer 是一个线程安全的可修改字符序列。StringBuffer 的线程安全是通过在各种修改数据的方法上用 synchronized 关键字修饰实现的。

StringBuilder在能力上和 StringBuffer 没有本质区别,但是它去掉了线程安全的部分,有效减小了开销,是绝大部分情况下进行字符串拼接的首选。

StringBuffer和StringBuilder 底层都是利用可修改的数组,二者都继承了 AbstractStringBuilder,里面包含了基本操作,区别仅在于最终的方法是否加了 synchronized,构建时初始字符串长度加 16(这意味着,如果没有构建对象时输入最初的字符串,那么初始值就是 16)。我们如果确定拼接会发生非常多次,而且大概是可预计的,那么就可以指定合适的大小,避免很多次扩容的开销。扩容会产生多重开销,因为要抛弃原有数组,创建新的(可以简单认为是倍数)数组,还要进行 arraycopy

abstract class AbstractStringBuilder implements Appendable, CharSequence {
    /**
     * The value is used for character storage.
     */
    char[] value;
}
public StringBuilder() {
    super(16);
}

StringBuffer和StringBuilder的常用方法

posted @   易文杰  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
历史上的今天:
2021-05-14 Mysql 8.0 安装
点击右上角即可分享
微信分享提示