黑马程序员技术交流社区

标题: 每个初学者都应该搞懂的问题............ [打印本页]

作者: 0825王欢    时间: 2015-9-3 01:16
标题: 每个初学者都应该搞懂的问题............
问题1我声明了什么!String s = "Hello world!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容“Hello world!”这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向"Hello world!"这个String类型的对象。这就是真正发生的事情。我们并没有声明一个String对象,我们只是声明了一个只能指向String对象的引用变量。所以,如果在刚才那句语句后面,如果再运行一句:String string = s;我们是声明了另外一个只能指向String对象的引用,名为string并没有第二个对象产生string还是指向原来那个对象,也就是,和s指向同一个对象。String s1 = "This is cool!"; // 生成一个字符串对象[OBJ_1],将其引用赋值给s1String s2 = "This is cool!"; // 将同样的对象[OBJ_1]的引用赋值给s2String s3 = new String("This is cool!"); // 新建一个字符串对象[OBJ_2],其引用赋值给s3;s1 = s2; // s2保存的[OBJ_1]的引用赋值给s1,没有实际效果s3 = "This is cool!"; // [OBJ_1]的引用赋值给s3s3原先引用的[OBJ_2]不再被引用 这样的代码共有产生2String实例,有1对象可以被GC

作者: 巧克黑力    时间: 2015-9-3 08:59
恩不错奥  进步了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2