黑马程序员技术交流社区
标题:
String 问题?
[打印本页]
作者:
黄湘怡
时间:
2011-11-12 23:19
标题:
String 问题?
字符串最大的特点是:一旦被初始化就不可以改变。
String a = "abc";
a = a + "abc";
System.out.println("a ="+a);
复制代码
输出的结果是abcabc,那不是被改变了么?
作者:
李印东老师
时间:
2011-11-12 23:25
abc还在,又新建了一个abcabc,只是a的指向变了。。睡了,{:soso_e125:}
作者:
黄湘怡
时间:
2011-11-12 23:33
那怎么证明String一初始化就不可以改变呢?晕中~!
作者:
张志东
时间:
2011-11-13 00:55
这里的可变和不可变是相对的来说的,你感觉的变化其实就是 a 重新指向了一个新的字符串地址:也即是a + “abc” ,但是原来的 “abc”还在内存中,是无法改变的
api中这么说的String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。
理解这个东西要明确的知道你 String 出来的 a 其实不是一个真正的 字符串,而是一个指向字符串的引用,也就是内存中的地址值。
越是简单的问题解释起来越费劲儿。
作者:
bruinchen
时间:
2011-11-13 03:28
推荐看看这贴
http://bbs.itheima.com/thread-3496-1-1.html
作者:
史晓霞
时间:
2011-11-13 07:46
意思是字符串"abc"的值在内存中的值是不变的,"abc"相当于一组常量
作者:
陈超
时间:
2011-11-13 09:11
证明String一初始化就不可以改变:
你可以定义两个变量同时指向同一个字符串常量:如:a="";b=a;
然后改变其中一个,再同时输出两个变量,看两个变量是否相同
作者:
黄湘怡
时间:
2011-11-13 13:50
恩,谢谢大家~!{:soso_e100:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2