黑马程序员技术交流社区

标题: String [打印本页]

作者: william_J    时间: 2014-11-21 21:46
标题: String
Integer i = new Integer(127);
Integer i = 127;
这俩个有区别吗?

作者: 地瓜君    时间: 2014-11-21 22:23
有区别啊,Integer i = 127;实际是调用Integer.valueOf(127);而不是转化成new Integer(127);当值为byte类型时,Java在Integer中有事先缓存好的原型对象, 每次返回的都是同一个Integer对象,只有不在这个范围的数才会new出一个Integer
而Integer i = new Integer(127);就直接new了~
作者: 迷失的小Z    时间: 2014-11-21 22:34
第一个是先在堆内存中new出一个对象 ,把堆内存中的对象的地址值赋给i,同时在对象中会有地址值指向常量池中的127,而第二个是i的地址值直接指向常量池中的127
作者: yangyujoe    时间: 2014-11-21 22:38
没有区别   没有区别   没有区别   没有区别   没有区别   没有区别   没有区别   没有区别   没有区别   没有区别   
作者: Smart_lll    时间: 2014-11-21 22:44
迷失的小Z 发表于 2014-11-21 22:34
第一个是先在堆内存中new出一个对象 ,把堆内存中的对象的地址值赋给i,同时在对象中会有地址值指向常量池 ...

堆内存中创建的对象,是指的数组和类这样的引用数据类型吧,难道Integer也是引用数据类型?求解啊?
作者: 迷失的小Z    时间: 2014-11-21 22:47
Smart_lll 发表于 2014-11-21 22:44
堆内存中创建的对象,是指的数组和类这样的引用数据类型吧,难道Integer也是引用数据类型?求解啊? ...

是啊…… Integer是int的封装类,说白了就是一个类……而且……除了基本数据类型之外不就是引用数据类型么……
作者: Smart_lll    时间: 2014-11-21 23:02
迷失的小Z 发表于 2014-11-21 22:47
是啊…… Integer是int的封装类,说白了就是一个类……而且……除了基本数据类型之外不就是引用数据类型 ...

对哈,我现在还在学视频。。。
作者: zhouyunfang    时间: 2014-11-22 00:09
new 出来的永远都是新的。指向的地址是不一样的




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