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

初学者求助大神一个问题
请设计一个KString类,让它具备如下特性:
1) KString str1 = "Hello";
2) KString str2 = str1;
3) str += "world";在执行 
1)之后,str1 的内容是 "Hello";在执行 2)之后,str2 的内容是 "Hello"; 但是str2内部未给"Hello"分配新空间;在执行 3)之后,str2 的内容是 "Helloworld", str1的内容是"Hello"而未改变;
这个怎么解决呢?

------解决方案--------------------
String是final的,不可继承。
1) KString str1 = "Hello";永远非法的
------解决方案--------------------
去找找String 常量池
------解决方案--------------------
这属于C++的题目。
------解决方案--------------------
在不能自由控制内存分配和引用的情况下,要想用Java做到这个非常不容易,建议先熟悉一下Java与C++的区别。C++做这个事情是强项。
------解决方案--------------------
楼主的问题类似于 str1保持原来的hello  str2 变成 helloword吗?
str2和str1引用都一样
str1改变了 str2起始也要跟着变,
所需要做到不一样的话需要用到克隆
------解决方案--------------------
楼主的问题类似于 str1保持原来的hello  str2 变成 helloword吗?
str2和str1引用都一样
str1改变了 str2起始也要跟着变,
所需要做到不一样的话需要用到克隆 
------解决方案--------------------
引用:
请设计一个KString类,让它具备如下特性:
1) KString str1 = "Hello";
2) KString str2 = str1;
3) str += "world";在执行 
1)之后,str1 的内容是 "Hello";在执行 2)之后,str2 的内容是 "Hello"; 但是str2内部未给"Hello"分配新空间;在执行 3)之后,str2 的内容是 "Helloworld", str1的内容是"Hello"而未改变;
这个怎么解决呢?


代码写错了,str变量在哪声明的?
------解决方案--------------------
是内存交换问题吧?