免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3269 | 回复: 17
打印 上一主题 下一主题

关于Stirng类的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-29 16:53 |只看该作者 |倒序浏览
import javax.swing.*;
public class StringBufferAppend {

                public static void main(String[] args) {
               
                String  s1 =  new String("hello");
                String  s2 =  new  String("world");
                         s1 += s2;
                JOptionPane.showMessageDialog(null ,s1,"caption",JOptionPane.INFORMATION_MESSAGE);
                System.exit(0);

        }

}
输出:hellloworld
字符串常量是不能改变的。。为什么对s1进行做连接运算,结果却该改变s1的内容
希望大家帮忙!!

论坛徽章:
0
2 [报告]
发表于 2006-06-29 17:10 |只看该作者
s1已经指向另一块内存空间了。

论坛徽章:
0
3 [报告]
发表于 2006-06-29 17:35 |只看该作者
String  s1 =  new String("hello");
String  s2 =  new  String("world");
s1和s2分别指向一个空间地址,s1>"hello",s2>"world";
s1 +=s2;这一步操作,并没有改变s1所在地址的hello值,而是在堆中另外开辟一个装有helloworld的空间,然后把s1再指过去!

论坛徽章:
0
4 [报告]
发表于 2006-06-29 18:00 |只看该作者
字符串对象是常量
又没说字符串引用是常量

论坛徽章:
0
5 [报告]
发表于 2006-06-29 18:55 |只看该作者
看来楼主是java新手,我这里就教你一招吧,

java里面严禁使用 s1 += xx; 的语法,因为字串连接效率不高,性能很差。应该用StringBuilder(jdk5)或者StringBuffer(如果没有jdk5)

论坛徽章:
0
6 [报告]
发表于 2006-06-29 21:12 |只看该作者
原帖由 perryhg 于 2006-6-29 18:55 发表
看来楼主是java新手,我这里就教你一招吧,

java里面严禁使用 s1 += xx; 的语法,因为字串连接效率不高,性能很差。应该用StringBuilder(jdk5)或者StringBuffer(如果没有jdk5)


偶也是新手。。不知道+=效率很差,整形的+=没什么问题吧、?

论坛徽章:
0
7 [报告]
发表于 2006-06-30 06:46 |只看该作者
=+==实际等于不停new

论坛徽章:
0
8 [报告]
发表于 2006-06-30 08:08 |只看该作者
原帖由 艾斯尼勒 于 2006-6-29 21:12 发表


偶也是新手。。不知道+=效率很差,整形的+=没什么问题吧、?

仅仅针对String来说,数字没问题。

论坛徽章:
0
9 [报告]
发表于 2006-06-30 11:04 |只看该作者
嗯,效率很差,不过有的时候图省事,写写也没关系,是吧,perryhg~

论坛徽章:
0
10 [报告]
发表于 2006-06-30 13:13 |只看该作者
:) 呵呵,养成一个好的习惯~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP