黑马程序员技术交流社区
标题:
字符串一旦初始化就不能改变?
[打印本页]
作者:
Mylan
时间:
2014-8-11 15:03
标题:
字符串一旦初始化就不能改变?
本帖最后由 Mylan 于 2014-8-11 22:04 编辑
字符串一旦初始化就不能改变,这不是改变了吗
public class Demo1 {
public static void main(String[] args) {
String s="abc";
System.out.println(s);
s="kk";
System.out.println(s);
}
}
复制代码
运行结果
abc
kk
复制代码
作者:
fantacyleo
时间:
2014-8-11 15:05
不可变的意思是对象不可变,不是说引用对象的变量不可变。你改变的只不过是变量s的值(地址),而没有改变字符串对象"abc"的值
作者:
liwugang
时间:
2014-8-11 15:10
你这不叫改变,只是改变了引用地址
作者:
天邃任我桓
时间:
2014-8-11 15:31
我觉得可以这么理解,s就是定义系统的一个存储块,abc,kk就是存储在数据块里面的数据,存数的数据可以发生变化,但已经定义了的存储块无法改变,除非你释放他,不知道这么说可以不:lol
作者:
嘿~~
时间:
2014-8-11 16:10
字符串的引用不能改变,但是指向可以变化
作者:
tiandzwx
时间:
2014-8-11 16:13
s代表的是"abc"的地址值,你把s改成了"kk"的地址值,但是“abc”还是在内存中没有变过!
作者:
舍我其谁
时间:
2014-8-11 16:18
同意楼上的,你这是改的s的引用地址
作者:
cyc523633157
时间:
2014-8-11 16:19
改变引用地址,值不变。
作者:
lspooooo
时间:
2014-8-11 17:27
不是s不可改变,是“abc”不可改变
作者:
张涛的狂怒
时间:
2014-8-11 17:34
public class Demo1 {
public static void main(String[] args) {
String s="abc";//在栈内存开辟空间s(内存地址)指向字符串池中的abc
System.out.println(s);
s="kk";//将原来指向abc的连接断掉,使s向kk
System.out.println(s);
}
}
作者:
酋长第一
时间:
2014-8-11 20:56
不变的是地址的指向
作者:
酋长第一
时间:
2014-8-11 21:00
形式参数:
基本类型:形式参数的改变对实际参数没有影响。
引用类型:形式参数的改变对实际参数有影响。
字符串是一种特殊的引用类型。可以把它当作基本类型的值来看。
作者:
paozhuanyinyu
时间:
2014-8-11 21:51
没有改变“abc”的值
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2