黑马程序员技术交流社区

标题: java程序在JVM中工作原理 [打印本页]

作者: maxjack    时间: 2016-9-8 12:25
标题: java程序在JVM中工作原理
String str1 = "abc";      

String str2 = "abc";      

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

很奇怪,str1,str2在jvm 中 栈区,堆区,方法区,到底是如何工作了?
作者: gjf821687    时间: 2016-9-8 15:11
String str1 = "abc";      
String str2 = "abc";   
因为字符串都是常量,不可改变,所以,字符串都是存储在字符串常量池中,所以第一句是真正的创建了一个新的字符串对象,而第二句,JVM看到还是这个字符串,就直接把字符串常量池中的"abc"拿过来给了str2,所以他们是相等的,都是指向了同一个地址。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2