黑马程序员技术交流社区
标题: 求大神详细解释String类问题 [打印本页]
作者: 348532020 时间: 2015-5-8 16:14
标题: 求大神详细解释String类问题
问题一:
String s1 = "a";
String s2 = "b";
String str6 = s1 + s2;
System.out.println(str6 == "ab");
先说下我的理解:String1和2这个不用说了,两个肯定地址和值都不一样。
String str6 = s1 + s2; 内部操作是否为:在常量池中开辟一个空间,内容为"ab",然后把地址值赋值给str6 .此时str6是在堆中还是栈中?
第二个不解的地方就是 ==比较引用类型,应该是比较的地址值。str6的地址值是常量池中的地址值赋值给str6 ,但是"ab"的地址值是什么?不是常量池中的地址吗?内部操作是怎么样的,"ab"的值是哪里的地址值,还是根本就不是地址值??
问题二:
public static void main(String[] args){
String s1 = “abc”;
String s2 = “xyz”;
show(s1,s2);
System.out.println(s1+”-----”+s2);
}
static void show(String s1,String s2){
s1 = s2+s1+”Q”;
s2 = “W”+s1;
}
此程序的输出结果是什么。记不太清楚 基本类型赋值 和引用类型赋值的区别了。
但是我的理解是此处执行过show方法以后是s1,s2的指向都变了。为什么回到main方法以后又回到了之前的指向对象?
有些迷惑不解,或者说我是概念不清,混淆概念了。求大神回答。
如果你的回答只有一句话为了挣点黑马币什么的,那你就不要回复了谢谢。我需要的是能解决我疑惑的人,而不是只说结果和说的不清不楚的人。我自己运行也能知道答案,但是我要的是讲解。
求懂得人回答,谢谢!
作者: 348532020 时间: 2015-5-8 16:20
有大神能解答吗?谢谢
作者: l763631191 时间: 2015-5-8 16:44
本帖最后由 l763631191 于 2015-5-8 16:47 编辑
你这注册这么几天就搞这么多技术分和黑马币了,哇哈哈~~
作者: 348532020 时间: 2015-5-8 17:10
只要努力和用心,一切皆有可能{:2_36:}
作者: 348532020 时间: 2015-5-9 10:34
有大神解释吗?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |