黑马程序员技术交流社区

标题: Integer [打印本页]

作者: 心安勿忘    时间: 2014-1-22 12:18
标题: Integer
Integer x=new Integer("123");
Integer x=new Integer(123);
问题:这两条语句在内存中是什么样的?
第一句,在栈内存中有个x,x中存放的是Integer对象地址,在堆内存中存放的是Integer对象,
那么堆内存中Integer对象里面存的是123呢?还是存的是字符串123的地址,123存在于方法区的常量池中?
作者: 向阳泪无痕    时间: 2014-1-22 17:08
是的  -128~127 都在常用池中  当然存地址了
作者: 孤独的天奇    时间: 2014-1-22 23:17
integer就是对象啊 当然存的是引用
作者: dapeng111    时间: 2014-1-23 00:05
Integer x=new Integer("123");
Integer x=new Integer(123);
字符串“123”和整数123在常量池中都会一份存储。这个存储是在JVM在对java源文件完成编译的时候完成的。注意:对于整数要在0~127的范围内才能存在常量池中。
在运行的时候,Integer x=new Integer("123");和Integer x=new Integer(123);都要创建对象。所以会再堆空间里再复制一份123. 对于字符串“123”还有一个调用parseInt(String)的动作,将字符串,转换为整形。





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