A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄湘怡 黑马帝   /  2011-11-12 23:19  /  2080 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

字符串最大的特点是:一旦被初始化就不可以改变。
  1. String a = "abc";
  2.                 a = a + "abc";
  3.                 System.out.println("a ="+a);
复制代码
输出的结果是abcabc,那不是被改变了么?

7 个回复

倒序浏览
abc还在,又新建了一个abcabc,只是a的指向变了。。睡了,{:soso_e125:}

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1 赞一个!

查看全部评分

回复 使用道具 举报
那怎么证明String一初始化就不可以改变呢?晕中~!
回复 使用道具 举报
这里的可变和不可变是相对的来说的,你感觉的变化其实就是 a 重新指向了一个新的字符串地址:也即是a + “abc” ,但是原来的 “abc”还在内存中,是无法改变的
api中这么说的String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。

字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。
理解这个东西要明确的知道你  String 出来的 a 其实不是一个真正的 字符串,而是一个指向字符串的引用,也就是内存中的地址值。
越是简单的问题解释起来越费劲儿。

评分

参与人数 1技术分 +1 收起 理由
宁超 + 1

查看全部评分

回复 使用道具 举报
回复 使用道具 举报
意思是字符串"abc"的值在内存中的值是不变的,"abc"相当于一组常量
回复 使用道具 举报
陈超 黑马帝 2011-11-13 09:11:36
7#
证明String一初始化就不可以改变:
        你可以定义两个变量同时指向同一个字符串常量:如:a="";b=a;
        然后改变其中一个,再同时输出两个变量,看两个变量是否相同
回复 使用道具 举报
黄湘怡 黑马帝 2011-11-13 13:50:22
8#
恩,谢谢大家~!{:soso_e100:}

评分

参与人数 1技术分 +1 收起 理由
admin + 1 有问有答,不错

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马