Integer

tjzero_sapce 2009-06-04 05:11:09
我有点不明白啊

Integer test1 = new Integer(123); 和 Integer test2 = new Integer("123"); 到底有什么不一样啊?

另外 int test3 = test1 ; 一个Integer 的 怎么就能直接 转换为 int 的了呢? 不需要强制类型转换么?
...全文
63 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjzero_sapce 2009-06-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 izard999 的回复:]
Integer test1 = new Integer(123); 和 Integer test2 = new Integer("123");只是构造方法的重载而已,他们都是创建一个Integer对象. 在这里,你如果要判断两个Integer对象是否相等只能用equals方法了,因为是对象类型,而且你new了两次,内存就分配了两个空间分别存放两次创建的对象, 用==是比这两个对象的地址,当然是不相等的
int test3 = test1 这个代码,在JDK1.5以下是肯定会报错的.Integer是int的一个封装类而已,而且可以告…
[/Quote]

您所说的 1.5之后会自动解包和自动打包 是只针对这个包装类吧
猿敲月下码 2009-06-06
  • 打赏
  • 举报
回复
装箱和拆箱
fyofmee 2009-06-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huosidun 的回复:]
Integer test1 = new Integer(123); 和 Integer test2 = new Integer("123");

肯定是不一样啊.你new了两个对象啊,那内存空间里就为你开辟了两个不同的内存区域啊,只不过是两个对象里的值相等而已
Integer是包装类.也就是说它现在已经是是一个类了.别把他和int混淆

另外 int test3 = test1 ; 一个Integer 的 怎么就能直接 转换为 int 的了呢? 不需要强制类型转换么?
这个是java有个自动机制,会自动把int包装…
[/Quote]
JDK1.5中加的,自动装包,拆包
kaisa316 2009-06-06
  • 打赏
  • 举报
回复
1. 没区别,只不过是两个不同的构造器有不同的参数类型。
2.自动包装机制,所以不用进行强制类型转换。
kingzhui005 2009-06-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huosidun 的回复:]
Integer test1 = new Integer(123); 和 Integer test2 = new Integer("123");

肯定是不一样啊.你new了两个对象啊,那内存空间里就为你开辟了两个不同的内存区域啊,只不过是两个对象里的值相等而已
Integer是包装类.也就是说它现在已经是是一个类了.别把他和int混淆

另外 int test3 = test1 ; 一个Integer 的 怎么就能直接 转换为 int 的了呢? 不需要强制类型转换么?
这个是java有个自动机制,会自动把int包装…
[/Quote]
正解。那个自动打包/解包功能是jdk1.5的新特性。
fangpengyu 2009-06-05
  • 打赏
  • 举报
回复
是不同的构造方法,一个是字符串,一个是整型参数,JDK5.0后有自动装箱和自动解箱,内部给你自动转换了,原来是要调用某个方法才能转换的
yangzhiwei3340 2009-06-05
  • 打赏
  • 举报
回复
Integer 就是个包装类 int到Integer会自动包装
Integer到int也会自动解包 呵呵
晨星 2009-06-04
  • 打赏
  • 举报
回复
(1)除了是两个对象之外,没啥不一样,Integer类有两个构造函数,一个接受整数参数,另一个接受字符串参数;接受字符串参数的版本实际上是把字符串解析成整数。
(2)这个事情叫“自动拆箱”,是java 1.5之后引入的新特性。
loveappleforever 2009-06-04
  • 打赏
  • 举报
回复
学习了
8楼正确~
aaxuelian 2009-06-04
  • 打赏
  • 举报
回复
好...
lulu0126 2009-06-04
  • 打赏
  • 举报
回复
学习了!

tks!
guogaocheng 2009-06-04
  • 打赏
  • 举报
回复
Integer是java中的内置对象,是对int类型的封装,他就是int类型以对象形式存在于内存中。
同时提供一些相关int类型的操作。
比如 把一个数字字符串转换为int类型,则是常见的操作
int value = Integer.parseInt("123");

java中每一个基本类型都有对应的内置对象类型。
double --> Double
boolean --> Boolean 等等
基本类型的内置对象有一些使用上的好处:比如Integer类型能表示null,而int在使用的时候就必须有实际的值。
izard999 2009-06-04
  • 打赏
  • 举报
回复
Integer test1 = new Integer(123); 和 Integer test2 = new Integer("123");只是构造方法的重载而已,他们都是创建一个Integer对象. 在这里,你如果要判断两个Integer对象是否相等只能用equals方法了,因为是对象类型,而且你new了两次,内存就分配了两个空间分别存放两次创建的对象, 用==是比这两个对象的地址,当然是不相等的
int test3 = test1 这个代码,在JDK1.5以下是肯定会报错的.Integer是int的一个封装类而已,而且可以告诉你,每一个基本类型都有相对应的封装类. 1.5以后会自动解包和自动打包,是不需要强制转换的.!
yejinson 2009-06-04
  • 打赏
  • 举报
回复
方法具体实现不同, 高版本的可以直接隐式转换
bocai17 2009-06-04
  • 打赏
  • 举报
回复
这个问题其实看看API文档就很清楚了
test1和test2,你是分别用来Integer类的2个不同的构造方法创建,这2个实例对象用equals()方法可以看到相等,因为Integer类重写来equals().
从1.5版本开始包装器类型和基本类型之间可以自动转换,即自动包箱和自动拆箱
tjzero_sapce 2009-06-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huosidun 的回复:]
Integer test1 = new Integer(123); 和 Integer test2 = new Integer("123");

肯定是不一样啊.你new了两个对象啊,那内存空间里就为你开辟了两个不同的内存区域啊,只不过是两个对象里的值相等而已
Integer是包装类.也就是说它现在已经是是一个类了.别把他和int混淆

另外 int test3 = test1 ; 一个Integer 的 怎么就能直接 转换为 int 的了呢? 不需要强制类型转换么?
这个是java有个自动机制,会自动把int包装…
[/Quote]

合着说 test1.equals(test2) 是为 true 的, Integer test2 = new Integer("123"); 在传入参数的时候是 String 但是还是被自动转化成了 Integer类型 和 前面的 Integer test2 = new Integer(123); 下场是一样的!!
Adebayor 2009-06-04
  • 打赏
  • 举报
回复
[Quote=引用楼主 tjzero_sapce 的帖子:]
我有点不明白啊

Integer test1 = new Integer(123);  和  Integer test2 = new  Integer("123");  到底有什么不一样啊?

另外  int test3 = test1 ;    一个Integer 的 怎么就能直接 转换为 int 的了呢?  不需要强制类型转换么?
[/Quote]
1.new个两个对象 test1与test2只是字面值上相等 其它就没什么联系了
2.不会报错的 java的自动装包/拆包(jdk1.5新特性) 和.net的装箱拆箱差不多的
MiShiDeShiJie0628 2009-06-04
  • 打赏
  • 举报
回复
不清楚,我不怎么熟悉java
holsten32 2009-06-04
  • 打赏
  • 举报
回复
Integer test1 = new Integer(123); 和 Integer test2 = new Integer("123");

肯定是不一样啊.你new了两个对象啊,那内存空间里就为你开辟了两个不同的内存区域啊,只不过是两个对象里的值相等而已
Integer是包装类.也就是说它现在已经是是一个类了.别把他和int混淆

另外 int test3 = test1 ; 一个Integer 的 怎么就能直接 转换为 int 的了呢? 不需要强制类型转换么?
这个是java有个自动机制,会自动把int包装成integer.也会将integer自动装换成int 这个机制叫什么我忘了.好像叫什么自动封箱还是什么来的!有人知道不?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧