千思

一个Java数据类型的问题

class Demo
{
    
public static void main(String [] args)
    
{
        System.out.println(
123);
        System.out.println(
"123");
    }

}
 
上面的打印结果是一样的哦。

在第一个System.out.println(123);中123 是 int类型的
在第一个System.out.println(“123”);中"123 "是 String类型的

那为什么会输出一样的结果呢?

JVM会自动将这个int类型包装成Integer类型,然后调用其toString方法
"123"是String类型,这里也是会自动调用它的toString方法

所以结果是一样的

123是int类型,它是JAVA的基础数据类型,不能用.来调用方法,它也不是对象。
如果非要写,可以:Integer.valueOf(123).toString();

在System.out.println(Object obj);的时候..参数是一个对象,如果是基本数据类型,JVM会自动装箱。然后会自动调用该对象的toString()方法
每个类都有toString()方法,如果你没写,会默认继承自Object类的toString方法

posted on 2009-09-08 11:00 幻樱释 阅读(178) 评论(2)  编辑  收藏

Feedback

# re: 一个Java数据类型的问题 2009-09-08 12:27 Bom Wu

这里并没有自动装箱
这里调用的是两个不同的方法,不同类型参数的重载而已
System.out.println(int arg0)
System.out.println(String arg0)
事实上System.out.println() 对所有基本类型都进行了重载

自动装箱与拆箱是JDK 1.5后才有的特性
而你在JDK1.4 及之前版本下就可以直接使用
System.out.println(123);
这样的语句,可见,并没有自动装箱成Integer对象
  回复  更多评论   

# re: 一个Java数据类型的问题 2009-10-15 09:14 MS_Jove

谢谢您的指点  回复  更多评论   



只有注册用户登录后才能发表评论。


网站导航: