本文共 842 字,大约阅读时间需要 2 分钟。
那其实在Java中,关于字符串的实现,其实用的也是char数组,这可以从源码中得到体现。
BC系统搭建制作q<115.28.8.00.9.9>
/**
* Initializes a newly created {@code String} object so that it represents
* the same sequence of characters as the argument; in other words, the
* newly created string is a copy of the argument string. Unless an
* explicit copy of {@code original} is needed, use of this constructor is
* unnecessary since Strings are immutable.
*
* @param original
* A {@code String}
*/
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
这是String类的构造方法,而这个value实际上就是char数组。
/** The value is used for character storage. */
private final char value[];
字符串在内存中的保存方式
我们都知道如何去创建一个字符串,那么, 字符串在内存中的保存方式是怎样的呢?
在内存中有一个区域叫做常量池,而当我们以这样的方式去创建字符串:
String s1 = "abc";
String s2 = "abc";
这个字符串就一定会被保存到常量池中。而Java虚拟机如果发现常量池中已经存在需要创建的字符串中,它就不会重复创建,而是指向那个字符串即可。
转载地址:http://vldnv.baihongyu.com/