站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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);



涨见识了!


↑返回目录
前一篇: java构造函数问题
后一篇: 字符串转换成日期问题