我们在学习过程中,创建String对象时,接触到两种方法分别是:
- 调用String类的构造方法;
- 使用双引号”“;
然而这两种方法生成的字符串对象,在内存中的存储机制是不同的。
1.调用String类的构造方法:
在使用String构造方法定义对象时,Java环境会在每次调用的时候创建一个新的对象。如下代码所示:
String a=new String("tom");
String b=new String("tom");
上述代码中,a和b使用的是两个不同的存储对象,只是对象中的内容相同。
2.使用双引号:
当使用双引号定义对象时,Java环境首先去缓冲池中寻找相同内容的字符串,如果存在就直接拿出来用,如果不存在创建一个新的字符串放在缓冲池中。示例代码如下:
String a="tom";
String b="tom";
变量a和b使用的是缓冲池中的同一个存储对象。
注意:
一般情况下,建议使用String s="abc"方式创建String 对象,因为该方式采用字符串缓冲池机制,效率高。