java中创建字符串的两种方式(“”与new String())及区别

结论:通过“”创建的字符串实际上在java堆中只有一个,而通过new string创建出来的字符串在java堆中占有不同的内存。

java中创建字符串的两种方式(“”与new String())及区别java中创建字符串的两种方式(“”与new String())及区别

第一个True表明这两个在内存中拥有相同的地址,那么说明实际上在内存中只有一个,这有点像python中的内存管理方式,如果内容一样则声明一块空间,然后通脱给内存再将不同的名字按照标签的方式贴在内存上。

equals()函数的说明中显示这个函数只关心字符串是否相等,因此第二个也打印为True

java中创建字符串的两种方式(“”与new String())及区别

java中创建字符串的两种方式(“”与new String())及区别java中创建字符串的两种方式(“”与new String())及区别

通过new string 创建的字符串虽然拥有相同的内容,但在内存中已经是两块区域,因此第三个打印false,第四个打印True

最后再来验证一下都用new string创建的对象是否相同

java中创建字符串的两种方式(“”与new String())及区别java中创建字符串的两种方式(“”与new String())及区别

结果如结论一样:new string可以创造出一个完全新的string,而“”在内存中实际上只有一块,只不过多了一些引用。

因此 如果在需要区分String 的场合,需要注意这两种创建字符串的方式的区别。

上一篇:基于jQuery封装的分页组件


下一篇:vue实现部分页面导入底部 vue配置公用头部、底部,可控制显示隐藏