不是用new String()创建的,都在常量池里吗?

来源:2-14 字符串的不可变性

梦一

2017-07-19 21:38:31

String s1=new String("imooc");
		s1="hello,"+s1;//在堆里还是在常量池里?
		System.out.println("s1="+s1);

如上面代码,后来加的这个hello,S1指向了常量池里的hello,imooc吗?

另下一题的concat也是在常量池里创建了新的数据?

这就是String的不可变性吧

写回答

1回答

木子雨

2017-07-20

如上面代码,后来加的这个hello,S1是指向了常量池里的“hello,imooc”,因为s1="hello,"+s1;

2-9 选择题中的str1.concat(str2),是指将str2的字符串连接到str1字符串的结尾。根据String的不可变性,concat也是在常量池里创建了新的数据。System.out.println()语句只是将此新数据输出。由于没有赋值语句,所以没有任何对象指向这个新数据,它其实成了一个垃圾。

0

0 学习 · 7235 问题

查看课程

相似问题

回答 2

String区别?

回答 1

回答 1