程序一:
class Address
{
}
class Rectangle
{
}
class Length
{
}
class Check
{
}
class ToString
{
public static void main(String args[])
{
          Object ob1=new Object();
          Object s[]=new Object[4];
          s[0]=new Address();
  System.out.println(ob1.toString());
  s[1]=new Rectangle();
  Object ob2=new Object();
  System.out.println(ob2.toString());
  s[2]=new Length();
  Object ob3=new Object(); 
  System.out.println(ob3.toString());
  s[3]=new Check();
  Object ob4=new Object(); 
  System.out.println(ob4.toString());
}

}
运行结果:
java.lang.Object@757aef
java.lang.Object@9cab16
java.lang.Object@3e25a5
java.lang.Object@addbf1程序二:
class Address
{
}
class Rectangle
{
}
class Length
{
}
class Check
{
}
class ToString
{
public static void main(String args[])
{
            Object ob=new Object();
            Object s[]=new Object[4];
    s[0]=new Address();
    System.out.println(ob.toString());
    s[1]=new Rectangle();
    System.out.println(ob.toString());
    s[2]=new Length();
    System.out.println(ob.toString());
    s[3]=new Check(); 
    System.out.println(ob.toString());
}

}
运行结果:
java.lang.Object@757aef
java.lang.Object@757aef
java.lang.Object@757aef
java.lang.Object@757aef问题:为什么Object实例化多个ob对象和实例化一个ob对象的运行后的结果不一样啊?希望能解释具体一下,谢谢。

解决方案 »

  1.   

    Object 的toString()方法返回的是 包名.类名@hashcodehashcode是Object的hashCode()方法返回值不同的对象会返回不同的哈希码
      

  2.   

    第一个程序中ob1至ob4都进行了new操作,当然是不同的对象了。既然是不同的对象,打印出的内容当然也不一样了!!
    而我怎么发现你在第2个程序中,一直在打印同一个对象???既然如此,你说能不一样吗?
      

  3.   

    Mark下   内存分析兄弟看来你应该好好看看了
      

  4.   

    这是toString的源代码:public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }而toHexString是以十六进制的无符号整数形式返回哈希码的字符串表示形式你第一个程序Object s[]=new Object[4]; ,并依次调用4个对象的toString()方法,而第二个程序虽然也创建了s[]数组,但你却是对由Object ob=new Object();创建的ob调用了4次toString()方法,由于都是同一个对象ob,所以4次结果是一样的 
      

  5.   

    要重写,toString()方法toString
    public String toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。 
      

  6.   


    import java.io.*;class Address{} 
    class Rectangle{} 
    class Length{} 
    class Check{} class ToString 
    {
    public static void main(String args[])
    {
    Object s[] = new Object[4]; s[0] = new Address();
    Object ob1 = new Object();
    System.out.println(ob1.toString());

    s[1] = new Rectangle();
    Object ob2 = new Object();
    System.out.println(ob2.toString());

    s[2] = new Length();
    Object ob3 = new Object();
    System.out.println(ob3.toString());

    s[3] = new Check();
    Object ob4 = new Object();
    System.out.println(ob4.toString());
    }
    }//运行结果: 
    //java.lang.Object@757aef 
    //java.lang.Object@9cab16 
    //java.lang.Object@3e25a5 
    //java.lang.Object@addbf1