爱问知识人 爱问教育 医院库

Java里怎样才能不改变内存的指向而改变String的值。

首页

Java里怎样才能不改变内存的指向而改变String的值。

String aaa = new String("ABC");
或
String aaa = "ABC";
我怎么才能改变ABC的值,而不让aaa指向新的内存引用?
aaa = new String("xxx");
aaa = "xxx";
aaa = aaa+"xxx";
都会让aaa开辟新的内存地址。

提交回答
好评回答
  • 2006-04-19 11:55:30
    Java中的String类是声明为final的,一旦建立String对象之后它的值的内容是无法修改的,任何看上去是对String对象的值的修改都只是改变String对象的引用,但是StringBuffer类弥补了String类的不足,StringBuffer类的内容可以修改。

    铁***

    2006-04-19 11:55:30

其他答案

    2006-04-13 21:52:45
  • 建议你采用StingBuffer类。
    把String aaa实例化成StringBuffer类:
    ----StringBuffer aaaBuffer=new StringBuffer(aaa);
    然后再对StringBuffer类做任何修改都不会开辟新的内存(利用StringBuffer类的方法)
    最后在还原成Stirng类。

    拿***

    2006-04-13 21:52:45

  • 2006-04-13 20:49:22
  •   实际上我觉得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应该会自动被回收。

    毛***

    2006-04-13 20:49:22

类似问题

换一换

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 177-196
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):