java-- 字符串+拼接详解, 性能调优 (底层原理实现)

目录

简单了解一下字符串

String类里面是如何存放字符串的? 

String的不可变性

字符串拼接的方法

 1.使用+拼接字符串

2. 使用concat

3. 使用StringBuilder

4.StringBuffer

使用+字符串拼接的原理

使用concat

StringBuilder

效率比较


简单了解一下字符串

        字符串在java中, 是非常常用的一个引用的数据类型, 在java中没有专门提供一个字符串类型, 而是提供一个与之对应的类, 这个类可以和基本数据类型所对应的包装类进行横向对比. 例如, String类和Integer类里面都提供了可以供我们管理这些数据的方法, 例如String类里面有toString, toUppercase. toCharArray, 等等方法, Integer里面有parseInt, intValue, 等方法
        今天我们主要了解一下String类的情况.

String类里面是如何存放字符串的? 

private final char value[];

/** Cache the hash code for the string */
private int hash; // Default to 0

原来里面是有一个value的字符数组, 一个字符串被分为一个一个字母, 存放在这个字符数组里面.

String的不可变性

        为什么String类是不可变的?? 因为存放这个字符串的字符数字是使用private修饰的, 也就是说, 在这个包外面, 无法对这个value进行直接的访问(外界是看不到这个value字符数组的), 同时这个value数组被final修饰, 代表他不能被修改指向, 同时包里面也没有提供方法来修改这个字符数组里面的内容, 所以说无论怎么样这个字符数组都是不可变的. 一旦创建, 就不能改变.

        这样子设计有很多好处, 比如可以缓存hashcode, 也可以使用更加安全和便利.

下面来介绍一下字符串拼接的四种常用方法

字符串拼接的方法

 1.使用+拼接字符串

public class Test {
    public static void main(String[] args) {
        String a = "hello";
        String b = "world";
        String c = a + b;
        System.out.println(c);
    }
}

         这里需要特别说明的一点事, 这里的加法 是java中提供的一个语法糖, 这个语法糖就例如基础类型对应的包装类的自动装拆箱一样.

        什么是语法糖? 语法糖, 也被翻译成为糖衣语法, 是由英国计算机科学家, 彼得兰丁发明的一个术语, 这种语法对语言的功能没有影响, 但是更方便程序员使用, 语法糖让程序更加简洁, 有更高的可读性.

        此外, +号除了可以拼接字符串和字符串, 还可以拼接其他基本数据类型, 例如Boolean类型, 如下:

public class Test {
    public static void main(String[] args) {
        String a = "hello ";
        boolean b = false;
        String c = a + b;
        System.out.println(c);
    }
}

 

2. 使用concat

        除了使用+号之外, 还可以使用String类中提供的方法, concat来拼接字符串, 例如

public class Test {
    public static void main(String[] args) {
        String a = "hello ";
        String b = "world";
        String c = a.concat(b);
        System.out.println(c);
    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值