Java中的String和String pool

来源:互联网 发布:嘟嘟牛破译软件 编辑:程序博客网 时间:2024/05/17 02:55
在java中有两种方式创建字符串1.字面量方式创建字符串  String name = "tom";2.new关键字创建字符串  String name2 = new String("jerry");------------------------------------Java中的String pool(字符串常量池)String pool是java堆内存(heap memory)中的存储字符串的一块区域。A:当使用字面量的方式创建字符串时,虚拟机会检查字符串池中的字符串,如果有相同的字符串,那么并不会为新的字符串分配内存空间,而是令它指向字符串常量池中已经存在的那个字符串。这样做的好处是节省了内存的消耗。注意使用字面量的方式创建的字符串是存储在字符串常量池中的。如:        String name = "tom";        String name2 = "tom";

这里写图片描述

当使用new关键字时,        String name3 = new String("tom");        String name4 = new String("tom); 就在java堆内存中创建了一个新的字符串,而不管在字符串池中是否已经存在。使用new关键字方法每一次都会在堆内存中创建新的字符串。这个字符串对象会一直待在java堆内存中直到被垃圾收集器收集,显然这会影响性能。注意使用new关键字创建的字符串不存储在字符串常量池中,而是直接在堆内存中。

这里写图片描述

原创粉丝点击