免费注册 查看新帖 |

Chinaunix

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

一个初学者对String 类的疑惑 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-15 11:23 |只看该作者 |倒序浏览
书上说: String 类对象的内容一但被初始化就不能改变,对于这句话如何理解?意思好象如下的代码不符.

public class TestClass
{
        public static void main(String[] args)
            {
                String y = "Test";
                String x = new String("Hellow Word");
                                 x="TestString";
                                System.out.println(x);
                x=y;
                System.out.println(x);
       
        }

}

String 类产生了两个实例对象x,y, 貌似改变了x对象的内容,请解悉一下为什么及分析一个内存的状态.谢谢!

论坛徽章:
0
2 [报告]
发表于 2007-05-15 11:58 |只看该作者
String y = "Test";
String x= "Test";
/// 用的是一个内存对象
String x = new String("Hellow Word");
String y = new String("Hellow Word");               
//两个内存对象
x="TestString"; //等于重新new了
System.out.println(x);
x=y;//这个赋值 是指针.
x原来指向内容没变 变的是内存指针位置

论坛徽章:
0
3 [报告]
发表于 2007-05-15 15:14 |只看该作者
多谢仁兄指点,总算明白了一点,但
String x = "test"; 与 String x = new String("test") 有何区别?

[ 本帖最后由 sailing123 于 2007-5-15 15:36 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2007-05-15 15:59 |只看该作者
看来多此一问了,JDK文档中已说得很明白.
String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例来实现。

字符串是常量;它们的值在创建之后不能改变。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享它们。例如:


     String str = "abc";
等效于:


     char data[] = {'a', 'b', 'c'};
     String str = new String(data);

论坛徽章:
0
5 [报告]
发表于 2007-05-15 17:03 |只看该作者
String str = "abc";
等效于:


     char data[] = {'a', 'b', 'c'};
     String str = new String(data);
不能说等效分配内存时候有点区别 看我上边回帖

论坛徽章:
0
6 [报告]
发表于 2007-05-17 14:51 |只看该作者
String x = "test"; 与 String x = new String("test") 有何区别?

串池!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP