黑马程序员技术交流社区
标题:
关于字符串的问题求解
[打印本页]
作者:
lqg5522
时间:
2015-4-23 20:56
标题:
关于字符串的问题求解
本帖最后由 lqg5522 于 2015-4-27 21:31 编辑
为什么API里面说字符串是常量,不能被改变。
可是我的代码这样写却没有问题
public class StringDemo {
public static void main(String[] args) {
String str="abdc";
str = "fff";
System.out.println(str);//输出fff
}
}
复制代码
作者:
lf027
时间:
2015-4-23 21:22
str = "fff";这个是又给str赋值了,输出的肯定就是fff,API说的是字符串的引用不能被改变
作者:
niuchuanhe
时间:
2015-4-23 21:48
这题没有改变字符串,只是把fff赋值给了str =的意识是说把右边的值赋值给予左边
作者:
魔蝎座
时间:
2015-4-23 21:54
你理解错了,单纯的字符串是常量,但是你定义了一个变量str,一开始将字符串常量abdc赋值给变量str,后来又把字符串fff赋值给str并没有改变常量abcd只是改变了变量str的值
作者:
最好的我
时间:
2015-4-23 21:57
看看。膜拜大神~~~~~~~
作者:
waylent
时间:
2015-4-23 22:00
我的理解,字符串常量是不变的,字符串变量是可以变的
作者:
lqg5522
时间:
2015-4-23 22:02
魔蝎座 发表于 2015-4-23 21:54
你理解错了,单纯的字符串是常量,但是你定义了一个变量str,一开始将字符串常量abdc赋值给变量str,后来又 ...
就是说其实是在内存里面创建了两个字符串,然后把后面那个的引用指向了str吗
作者:
yapo
时间:
2015-4-23 22:12
数据类型为“String",分析:用new String() 创建的字符串不是常量,不能在编译期就确定,所以new String() 创建的字符串不放入常量池中,它们有自己的地址空间。
作者:
1017161726
时间:
2015-4-23 23:04
魔蝎座 发表于 2015-4-23 21:54
你理解错了,单纯的字符串是常量,但是你定义了一个变量str,一开始将字符串常量abdc赋值给变量str,后来又 ...
说的很对很有道理。就是这样。
作者:
rose_xiaomei
时间:
2015-4-24 04:02
字符串是字符串,变量是变量,所指的都不一样,你把字符串赋值给变量,又把变量的值改变,那结果肯定不一样。
作者:
只吃饭不洗碗
时间:
2015-4-24 08:46
字符串本身是不变的,是一个对象,这个例子中 str是变量,str先是指向了“abdc”这个对象,后又改为指向“fff”这个对象,变化的是str这个变量,而非字符串本身。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2