社区
Java SE
帖子详情
Integer
tjzero_sapce
2009-06-04 05:11:09
我有点不明白啊
Integer test1 = new Integer(123); 和 Integer test2 = new Integer("123"); 到底有什么不一样啊?
另外 int test3 = test1 ; 一个Integer 的 怎么就能直接 转换为 int 的了呢? 不需要强制类型转换么?
...全文
66
20
打赏
收藏
Integer
我有点不明白啊 Integer test1 = new Integer(123); 和 Integer test2 = new Integer("123"); 到底有什么不一样啊? 另外 int test3 = test1 ; 一个Integer 的 怎么就能直接 转换为 int 的了呢? 不需要强制类型转换么?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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 这个机制叫什么我忘了.好像叫什么自动封箱还是什么来的!有人知道不?
关于
Integer
的缓存
先看个实例代码: # 一:自动装箱
Integer
s1 = 2;
Integer
s2 = 2; System.out.println(s1 == s2); # 答案为true # 二:
Integer
s1 = new
Integer
(2);
Integer
s2 = new
Integer
(2); System.out.println(s1 == s2); # 答案为false new
Integer
的比较是false,而自动装箱的比较确是true。 这与
Integer
的缓存机制有关。 自动装箱等
Java
Integer
类型比较问题
Java
Integer
类型比较问题 【强制】所有整型包装类对象之间值的比较,全部使用 equals 方法比较。 说明:对于
Integer
var = ? 在-128至127范围内的赋值,
Integer
对象是在
Integer
Cache.cache产生,会复用已有对象,这个区间内的
Integer
值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用 equals 方法进行判断。 ---- 阿里巴巴Java开发手册 抱着探索的精神我们来看
java-String与
Integer
的相互转化
一、
Integer
转String //方法一:
Integer
类的静态方法toString()
Integer
a = 2; String str =
Integer
.toString(a) //方法二:
Integer
类的成员方法toString()
Integer
a = 2; String str = a.toString(); //方法三:String类的静态方法valueOf() In
String与
Integer
相互转换
String与
Integer
相互转换 //方法一:
Integer
类的静态方法toString()
Integer
a = 2; String str =
Integer
.toString(a) //方法二:
Integer
类的成员方法toString()
Integer
a = 2; String str = a.toString(); //方法三:String类的静态方法valueOf() ...
java
integer
比较大小_
Integer
类型对象之间大小比较
一.
Integer
类型对象之间大小比较1. 使用 new
Integer
() 创建的对象 :首先,我们知道,在java中,基本类型之间是可以做大小比较的,例如int i=1,int j=2,是可以直接使用关系运算符“”、“==”等符号来做比较的。但在实际开发中,基本类型的包装类更为常用,那么包装类型的比较运算是如何呢?在main方法中执行下面代码:Java代码
Integer
i=newIn...
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章