日期:2014-05-18  浏览次数:20734 次

new Integer()和new int[3]的困惑??
1.我自己写了一个类,代码如下:
public   class   Test   {
private   final   int   i;
public   Test(int   i)   {
//   TODO   Auto-generated   constructor   stub
this.i   =   i;
}

/**
  *   @param   args
  */
public   static   void   main(String[]   args)   {
//   TODO   Auto-generated   method   stub
System.out.println(new   Test(123));
System.out.println(new   Integer(123));

}

}
为什么System.out.println(new   Test(123));的结果是Test@35ce36
而System.out.println(new   Integer(123));的结果是123   ?不解。。。。

2.int[]   j=new   int[3];int[]是个类吗?为什么可以new   int[3]呢?


多谢各位指点。。。。。。


------解决方案--------------------
你没有覆盖 toString()方法,System.out.println(par) 会调用par的toString()方法。
public class Test {
private final int i;
public Test(int i) {
// TODO Auto-generated constructor stub
this.i = i;
}
public String toString(){
StringBuffer tmp = new StringBuffer();
tmp.append(i);
return tmp.toString();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(new Test(123));
System.out.println(new Integer(123));

}

}

这样出来就会有了,
呵呵!
------解决方案--------------------
所有的数组都是一个类,你可以用Class类的isArray方法来判断一个对象是不是数组。