不懂就问。
1. String a="imooc"; 2. String a="imooc.com"; 3. String b=new String("imooc"); 通过两次给变量a赋值,改变的是a的指针指向吗? 那么第一次给变量a赋的值"imooc"是否会被回收呢? 以上的两种写法的意义区别是什么? 谢谢。
1. String a="imooc"; 2. String a="imooc.com"; 3. String b=new String("imooc"); 通过两次给变量a赋值,改变的是a的指针指向吗? 那么第一次给变量a赋的值"imooc"是否会被回收呢? 以上的两种写法的意义区别是什么? 谢谢。
2016-02-17
1、两次给a赋值,是改变了a的引用,即a中存放的地址指向了不同的String Pool中的对象(从指向"imooc"改变为指向“imooc.com”);
2、String a = "imooc"; 首先会检查 String Pool中有没有“imooc”这个字符串对象,如果有,a直接reference to该字符串对象,如果没有,在String Pool中创建“imooc”,并使a reference to 所创建的对象;
3、String b = new String("imooc");首先,在heap上创建一个String对象“imooc”,b reference to 该对象;然后,JVM会检查String Pool中是否存在“imooc”对象,如果没有,则在String Pool中再创建一个;
举报