常用的字符串构造有以下三种:
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标记结尾,我

最低0.47元/天 解锁文章
693

被折叠的 条评论
为什么被折叠?



