程序一:
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对象的运行后的结果不一样啊?希望能解释具体一下,谢谢。
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对象的运行后的结果不一样啊?希望能解释具体一下,谢谢。
而我怎么发现你在第2个程序中,一直在打印同一个对象???既然如此,你说能不一样吗?
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}而toHexString是以十六进制的无符号整数形式返回哈希码的字符串表示形式你第一个程序Object s[]=new Object[4]; ,并依次调用4个对象的toString()方法,而第二个程序虽然也创建了s[]数组,但你却是对由Object ob=new Object();创建的ob调用了4次toString()方法,由于都是同一个对象ob,所以4次结果是一样的
public String toString()返回该对象的字符串表示。通常,toString 方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。
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