请问String类的实例真的是不能修改(immutable)的吗? 这话是从哪说的,用了这么多String类型,如果竟然不能修改,还怎么用啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 str = str + "HIJK";可能被解释为str = new StringBuffer().append(str).append("HIJK").toString()下一句同理 你先明白内存中的字符串以及指向这些字符串的引用变量。String str ="ABCDEFG";str = str + "HIJK";这个时候str已经没有指向"ABCDEFG"了,指向新的字符串"ABCDEFGHIJK"。使用的内存地址都不同的。 String 对象被创建后是不能被改变的。你上面程序只看到表面。每次需要改变字符串的时候都要创建一个新的String对象来保存新的内容。原始的字符串不变。其实改变的是STring引用的变量指向另外的String对象。正如楼上所说,StringBuffer包含创建后可被改变的字符串。 String还是final的呢.因为它是如此重要的一个类.创建后就不能修改. string实力是不能定长的,一旦实力后,长度是不可变的,既不可修改。但是如下:String s="dd";s=s+"a";其实是把s指想了新的地址。 String s = "aa";s = s + "bb";s结果是:aabbs的地址已经改变,不是原先初始化的地址。String对象每执行一个‘+’操作,都需要new String一次,所以对String对象进行‘+’操作时效率非常的低,所以对于字符串的相加不要用‘+’,用字符串的连接 关于多线程 Java 游戏界面 面试题 问个工具栏制作的问题 就10分了 问个io的问题 java中的String类的offset什么时候不是0呢? 异常捕获 一个挺菜的问题, 通过jdbc如何连接远程数据库?(不使用odbc桥) 怎么样在Applet中访问ACCESS数据库?(java新手) 如何截取某个网页的页面,将其源文件转化为String? jbuilder中的popupmenu的问题?
可能被解释为
str = new StringBuffer().append(str).append("HIJK").toString()下一句同理
String str ="ABCDEFG";
str = str + "HIJK";
这个时候str已经没有指向"ABCDEFG"了,指向新的字符串"ABCDEFGHIJK"。
使用的内存地址都不同的。
你上面程序只看到表面。每次需要改变字符串的时候都要创建一个新的String
对象来保存新的内容。原始的字符串不变。
其实改变的是STring引用的变量指向另外的String对象。
正如楼上所说,StringBuffer包含创建后可被改变的字符串。
因为它是如此重要的一个类.
创建后就不能修改.
但是如下:
String s="dd";
s=s+"a";
其实是把s指想了新的地址。
s = s + "bb";
s结果是:aabb
s的地址已经改变,不是原先初始化的地址。
String对象每执行一个‘+’操作,都需要new String一次,
所以对String对象进行‘+’操作时效率非常的低,
所以对于字符串的相加不要用‘+’,用字符串的连接