我有点不明白啊 Integer test1 = new Integer(123); 和 Integer test2 = new Integer("123"); 到底有什么不一样啊?另外 int test3 = test1 ; 一个Integer 的 怎么就能直接 转换为 int 的了呢? 不需要强制类型转换么?
解决方案 »
- java基础问题 类中public域问题
- 为什么不能改变JavaScript内置类Number.MAX_VALUE
- 帮解释一下,外部类为什么可以访问内部类的私有成员?
- 菜菜级问题,难不到你们的吧!
- Map(Key, Value)中是如何鉴别相同的Key呢?
- UP 有分!UP 有分!snapshot 是一个什么样的软件,怎么使用,去哪里可以下载这个软件?请用过的兄弟给普及一哈
- 哪位大侠做过在java中调用服务器端的可执行应用程序?
- 一个怪问题。
- 请问SCJP要考Object Stream/Serializable Interface/Sockets吗?急急急
- 推荐JAVA经典牛书? 你们都用哪个开发环境? JB\VAJ?
- 系统时间加某一个int(比如40)后的系统时间是多少
- 如何向没有Main()方法的类注册事件监听器
Integer是包装类.也就是说它现在已经是是一个类了.别把他和int混淆另外 int test3 = test1 ; 一个Integer 的 怎么就能直接 转换为 int 的了呢? 不需要强制类型转换么?
这个是java有个自动机制,会自动把int包装成integer.也会将integer自动装换成int 这个机制叫什么我忘了.好像叫什么自动封箱还是什么来的!有人知道不?
2.不会报错的 java的自动装包/拆包(jdk1.5新特性) 和.net的装箱拆箱差不多的
合着说 test1.equals(test2) 是为 true 的, Integer test2 = new Integer("123"); 在传入参数的时候是 String 但是还是被自动转化成了 Integer类型 和 前面的 Integer test2 = new Integer(123); 下场是一样的!!
test1和test2,你是分别用来Integer类的2个不同的构造方法创建,这2个实例对象用equals()方法可以看到相等,因为Integer类重写来equals().
从1.5版本开始包装器类型和基本类型之间可以自动转换,即自动包箱和自动拆箱
int test3 = test1 这个代码,在JDK1.5以下是肯定会报错的.Integer是int的一个封装类而已,而且可以告诉你,每一个基本类型都有相对应的封装类. 1.5以后会自动解包和自动打包,是不需要强制转换的.!
同时提供一些相关int类型的操作。
比如 把一个数字字符串转换为int类型,则是常见的操作
int value = Integer.parseInt("123"); java中每一个基本类型都有对应的内置对象类型。
double --> Double
boolean --> Boolean 等等
基本类型的内置对象有一些使用上的好处:比如Integer类型能表示null,而int在使用的时候就必须有实际的值。
(2)这个事情叫“自动拆箱”,是java 1.5之后引入的新特性。
Integer到int也会自动解包 呵呵