一、字符串构造

常用的字符串构造有以下三种:

public static void main(String[] args) {
        //new一个String对象
        String s1 = new String("hello");
        
        //使用常量串进行构造
        String s2 = "hello";
        
        //使用字符数组进行构造
        char[] arr = {'h','e','l','l','o'};
        String s3 = new String(arr);
    }
1
2
3
4
5
6
7
8
9
10
11
在这里特别注意的是:

s1,s2,s3存储的是一个地址,由地址指向所引用的对象,可是当我们打印s1,s2,s3的时候,却发现输出的结果是“hello”

原因是String调用了toString的构造方法,我们打开String的源码看看

最后是print输出“hello”。

String类是引用类型,内部并不存储字符串本身,在String类的实现源码中,String类实例变量如下:

我们可以看到,String类中有两个成员,一个是数组value[],一个是整型hash(默认为0),当我们调试的时候,我们可以看到是value[]存储的“hello”

如下图所示,我们可以这样理解:


字符串常量后面没有以\0标记结尾,我

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值