黑马程序员技术交流社区
标题:
java的内存机制
[打印本页]
作者:
DoubleUUU
时间:
2015-11-18 22:09
标题:
java的内存机制
public class StringDemo{
public static void main(String[] args){
String s1 = "abc";
String s2 = new String("abc" );
System.out.println(s1 == s2);
}
}
复制代码
这个程序运行的结果是False,解释的是S1的对象是存储在常量池中,而S2的对象是存在堆中,为什么这两个对象要存在不同的内存中啊?
还有,大牛能不能科普下java的内存机制?栈、堆、方法区、还有现在这个常量池都分别用来存储什么?
作者:
隔壁马良
时间:
2015-11-19 00:57
java.exe运行时首先是编译成的字节码文件(.class)文件存储在方法区中,当运行到main时就会在栈内生成一个区存放给定的s1,而s2会在new的作用下在堆中开辟空间存放abc,地址值是不一样的
作者:
wx_YXxWrUwd
时间:
2015-11-19 01:34
今天刚讲到这些东西 看完回复感觉理解了点
作者:
xiao15779706
时间:
2015-11-19 08:35
那个equals是把Object父类中的equals方法重写了,String方法中比较的是字符串是否相同
作者:
曾经的星空
时间:
2015-11-19 12:38
"abc"是存储在堆区的String对象;new String("abc")是在堆区再创建一个对象,其存储"abc"对象在堆区的地址值。个人看法
作者:
刘旭波
时间:
2015-11-19 20:05
S1是一个对象,S2是2个对象,地址值不同,肯定是flase
作者:
hbcoding
时间:
2015-11-19 23:30
s1为什么存在常量池中啊,不懂诶,求大神解答
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2