Java里怎样才能不改变内存的指向而改变String的值。
String aaa = new String("ABC"); 或 String aaa = "ABC"; 我怎么才能改变ABC的值,而不让aaa指向新的内存引用? aaa = new String("xxx"); aaa = "xxx"; aaa = aaa+"xxx"; 都会让aaa开辟新的内存地址。
Java中的String类是声明为final的,一旦建立String对象之后它的值的内容是无法修改的,任何看上去是对String对象的值的修改都只是改变String对象的引用,但是StringBuffer类弥补了String类的不足,StringBuffer类的内容可以修改。
建议你采用StingBuffer类。 把String aaa实例化成StringBuffer类: ----StringBuffer aaaBuffer=new StringBuffer(aaa); 然后再对StringBuffer类做任何修改都不会开辟新的内存(利用StringBuffer类的方法) 最后在还原成Stirng类。
实际上我觉得aaa,bbb都相当于指针如果你把指针的bbb的地址给了aaa当然aaa就和bbb相等了,而它们都指向同一个字符串存放单元。这大概就是java说的“没有像C语言那样的指针的原因”。另外我昨天说的当你把aaa指向其他字符串单元时,原来的aaa所指的字符串会自动回收,即没有单元浪费,就像C中的free *P似的。
这样更动态,更高效。反正分配这些单元都是在堆栈部分。另外如楼下所说,用Stringbuffer也可以,它里面有个函数setCharAt()。 String类提供了一个replace()方法,你可以把原串的字符替换成新的字符 如:aaa。replace('A','a');aaa。
replace('B','b');aaa。replace('C','c') 之后aaa = "abc"了。 我认为aaa="xxx"不算开辟新内存,因为aaa本身只是个引用,只有指向真正的字符串时才有意义,而从指向“ABC”到指向“abc”过程中,ABC应该会自动被回收。
答:打开 任务管理器 可以看到你的游戏占用多少内存和CPU 。 游戏中的内存。。 没听说过,可能是我不晓得。详情>>
答:google "java 缓冲池"详情>>
答:百度里搜张孝祥 非常好的视频教程详情>>