A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© maxjack 初级黑马   /  2016-9-8 12:25  /  317 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String str1 = "abc";      

String str2 = "abc";      

System.out.println(str1==str2); //true   这答案有点邪恶,请解释下?

很奇怪,str1,str2在jvm 中 栈区,堆区,方法区,到底是如何工作了?

1 个回复

正序浏览
String str1 = "abc";      
String str2 = "abc";   
因为字符串都是常量,不可改变,所以,字符串都是存储在字符串常量池中,所以第一句是真正的创建了一个新的字符串对象,而第二句,JVM看到还是这个字符串,就直接把字符串常量池中的"abc"拿过来给了str2,所以他们是相等的,都是指向了同一个地址。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马