日期:2014-05-18  浏览次数:20775 次

今天去大学听了一节课,碰到一个破老师解释的问题。如下
我觉得我技术很烂,没想到这个大学老师比我还烂
讲的java的对象
String s = "Hello world!"; 
这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任何对象,目前指向"Hello world!"这个String类型的对象。这就是真正发生的事情。我们并没有声明一个String对象,我们只是声明了一个只能指向String对象的引用变量,String string = s;我们是声明了另外一个只能指向String对象的引用,名为string,并没有第二个对象产生,string还是指向原来那个对象,也就是,和s指向同一个对象,s = s + " world!"; s在指向原来那个对象的基础上再加上"world!"
因为这句话和他争吵起来了
结果她死不承认,还要问我名字。郁闷。

------解决方案--------------------
噢,你告诉他用stringBuilder
------解决方案--------------------
string str="abc";
string str2=str;
str="aaa";


你就写这个小例子看她怎么解释不就完了?
------解决方案--------------------
s在指向原来那个对象的基础上再加上"world!" 貌似错的。
s+“world!”产生了一个新String对象,然后把s指向这个新对象。
------解决方案--------------------
一个字符串对象被创建了以后就不会改变了,对于字符串连接,实际上是又新创建了一个对象
然后把原来的引用指向它,对于那个老师说的最后一句话,很明显是错的,
原来的对象还依然存在,只不过是s指向了新创建的那个对象了也就是hello world world
------解决方案--------------------
遇到这种问题我觉得没必要跟老师在课堂上硬拗太久,一是为了不浪费其他人的时间,二也是给老师一个下台阶的机会,人都是好面子的,应该在下课和他讨论这个问题,如果他还不服输,但是你又觉得你是对了,那也可以就这么算了,毕竟是计算机,不一定三五年之后谁对谁错还说不清楚。。