当前页面: 开发资料首页 → J2SE 专题 → 帮忙看看下面这点小代码?是不是因为jdk的版本造成的!(关于java.lang.Integer)
帮忙看看下面这点小代码?是不是因为jdk的版本造成的!(关于java.lang.Integer)
摘要: 帮忙看看下面这点小代码?是不是因为jdk的版本造成的!(关于java.lang.Integer)
public class aaa
{
public static void main(String[] args)
{
int i=Integer.valueOf("123");
System.out.println(i);
}
}
按理说在jdk4.0的时候,这么写肯定编译不通过!因为Integer.valueOf("123")返回的是一个Integer对象,但是在jdk5.0中,就编译完全通过了!!请问是不是跟jdk的版本有关呢?还是其他什么原因!谢谢
Y
谢谢!我也看了api,但是没有弄清楚,到底有什么区别!好像说的是返回一个integer的实例.实例和int能匹配么?
jdk5.0里面又很多不同的,它的自动包装器比jdk1.4强很多
int是基本类型。
int i=Integer.valueOf("123")intValue();
另外public class aaa这个class名首字母要大写。
这个是1。5版本的一个变化,用Integer的地方通常可以接受int,用Double的也通常接受double,所以楼主的编译可以通过(在>=1。5版本下)
呵呵呵,说明长进了
还是不明白为什么一个对象类型能被基本类型的变量所接收?
我看还是规范化比较好
Integer.valueOf("123");
返回的是一个Integer 对象,int是基本类型
所以应该改成Integer i=Integer.valueOf("123");
在jdk5.0下,int到Integer和Integer到int是由编译器自动装包和解包的;
基本类型和对象自动转换
自动装箱
public static Integer valueOf(String s)
throws NumberFormatException
会抛出NumberFormatException异常
放在try--catch块中就可以了
try
{
int i=Integer.valueOf("123");
}
catch (NumberFormatException e)
{}
System.out.println(i);
涨见识了!