本帖最后由 孙含庆 于 2012-10-6 23:42 编辑
class StringDemo
{
public static void main(String[] args)
{
String java1 = "java";
String java2 = "java"; //用双引号创建
String java3 = new String("java"); //用String类的构造方法创建
String java4 = new String("java");
//用双引号创建对象的话,JVM会先去字符串缓冲池找相同内容的字符串,找不到,就在池子里放一个新的。
//现在内存中有三个对象 java1 和 java2 使用的是缓冲区中的同一个存储对象。
//用构造方法创建对象时,JVM 会和创建其他类型对象一样,一调用,就在堆内存创建一个新的。
//java3 和 java4 是不同的存储对象,只是对象中的内容相同
//两种创建方法有区别,一般,建议使用双引号的方式创建,该方式用缓冲池机制,效率高。
}
}
java 虚拟机内部就是根据你创建对象的方式来区分对象放在哪里的,你要是问 JVM 底层内部是怎么做这个动作,
那么建议初期学习阶段不要去这么钻牛角尖,会影响学习心情的,先按规则来学,等都学会了,会用了,就慢慢都懂了。 |