Java基础——字符串之String类和StringBuilder类

本文探讨了Java中String类的只读特性及其对性能的影响,通过实例分析证明String对象不可变性,并介绍编译器如何优化字符串拼接。同时,讲解了StringBuilder类在字符串拼接上的优势,以及其内部工作原理。
摘要由CSDN通过智能技术生成

一.引言


很多人觉得C/C++难,Java则相对简单,其中有一个原因就是,C/C++处理字符串那真的是会让很多人头疼,比如在C/C++中对字符串的初始化定义为:

char str[10] = "java";
char *str = "java";
char str[10]={
  'j','a','v','a','\0'};

一看到数组、指针,就让很多人犯愁了。而又例如字符串的拼接,在C/C++中是通过strcat(str1,str2)实现的,但是使用这个方法,必须得清楚知道str1拥有足够的空间容纳str2,否则会造成不能完整将str2拼接到str1上。总之,挺麻烦的,不是?而Java则对字符串相关的处理方法进行了很高级的封装,Java使用者也能很轻松地对字符串进行一系列操作,相比于C/C++,简直是如鱼得水。
当然,本人在此并不是比较C/C++和Java谁好谁不好。本篇文章主要讲讲Java中涉及到字符串的String类StringBuilder类

二.String类


1.String类的定义

如下代码所示:

public final class String
    implements java.io.Serializable, Comparable<String>, CharSequence {
   
    /** The value is used for character storage. */
    private final char value[];
    //其他成员变量和方法
    }

第一,可以注意到final修饰符,说明String类不能被继承。
第二,成员变量char value[]用于存储字符串中的每一个字符。

2.String对象的只读特性

String对象是不可变的,具有只读特性。

这句话看似无关痛痒,其实在实际的工程项目中,这一特性对性能必然有很大的影响,只是在大多数的开发过程中,我们并不在意。
那如何说明String对象的只读特性呢?又如何说明这一特性对性能的影响呢?我们One by one的回答。

2.1证明只读特性

在《Thinking in Java》第13章《字符串》中,作者举例说明:

package String;
public class Immutable {
    public static String upcase(String s) {
        return s.toUpperCase();
    }
    public static void main(String[] args) {
        String q = "howdy";
        System.out.println(q);
        String qq 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值