黑马程序员技术交流社区
标题:
解释
[打印本页]
作者:
zbgl
时间:
2013-11-19 17:17
标题:
解释
publicclass Test1 {
public static void changeStr(String str){
str="welcome";
}
public static void main(String[] args) {
String str="1234";
changeStr(str);
System.out.println(str);
}
}
她结果为什么是1234?
作者:
半夜雨半夜雨
时间:
2013-11-19 18:19
String类定义的值是不可改变的
作者:
Michael_xpd
时间:
2013-11-19 18:56
String str=“1234”,这条语句就相当于给String类的对象“1234”起了个别名叫str,那么str就指向对象“1234”,由于一个指针只能指向一个对象,所以String类的变量值一经赋值就不能再改变了。所以,结果仍然是1234.
作者:
zbgl
时间:
2013-11-19 19:13
谢谢!知道了
作者:
段光宇
时间:
2013-11-19 19:19
定义字符串str为1234,其实就是str在内存中指向了一个地址,内容为1234,这个指针就只指向这个地址,所以str=“1234”是不会变的
作者:
Faner
时间:
2013-11-19 19:48
我觉得你代码写的有问题啊!!难道运行的时候不提醒错误!!尤其那个函数的调用???
作者:
zbgl
时间:
2013-11-19 19:50
代码没问题的
作者:
mayor125
时间:
2013-11-19 20:02
先声明了一个String类型的对象str = "welcome",相当于是在堆内存中开辟了一块空间,里面的内容是"welcome"。
然后又在主函数里面什么了一个同名的对象str = "1234";由于String类型的值是不可改变的,所以相当于是又在堆内存中开辟了一块空间,里面的内容是"1234",然后将对象str的由原来指向"welcome"的变成了指向"1234"的堆内存空间。
所以打印出来的结果是1234
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2