public class OverloadedConstructor {
OverloadedConstructor() {
System.out.println("Default constructor");
}
OverloadedConstructor(String s) {
System.out.println("String arg constructor");
System.out.println(s);
}
public static void main(String args[]) {
OverloadedConstructor[] a=new OverloadedConstructor[5];
a[0]=new OverloadedConstructor();
a[1]=new OverloadedConstructor("I");
a[2]=new OverloadedConstructor("Am");
a[3]=new OverloadedConstructor("A");
a[4]=new OverloadedConstructor("Good boY!");
for(int i=0;i<5;i++)
System.out.println(a[i]);
}
}运行结果:Default constructor
String arg constructor
I
String arg constructor
Am
String arg constructor
A
String arg constructor
Good boY!
OverloadedConstructor@126b249
OverloadedConstructor@182f0db
OverloadedConstructor@192d342
OverloadedConstructor@6b97fd
OverloadedConstructor@1c78e57程序的运行结果怎么会是这样子呢?@和后面的字符为什么会出现?
OverloadedConstructor() {
System.out.println("Default constructor");
}
OverloadedConstructor(String s) {
System.out.println("String arg constructor");
System.out.println(s);
}
public static void main(String args[]) {
OverloadedConstructor[] a=new OverloadedConstructor[5];
a[0]=new OverloadedConstructor();
a[1]=new OverloadedConstructor("I");
a[2]=new OverloadedConstructor("Am");
a[3]=new OverloadedConstructor("A");
a[4]=new OverloadedConstructor("Good boY!");
for(int i=0;i<5;i++)
System.out.println(a[i]);
}
}运行结果:Default constructor
String arg constructor
I
String arg constructor
Am
String arg constructor
A
String arg constructor
Good boY!
OverloadedConstructor@126b249
OverloadedConstructor@182f0db
OverloadedConstructor@192d342
OverloadedConstructor@6b97fd
OverloadedConstructor@1c78e57程序的运行结果怎么会是这样子呢?@和后面的字符为什么会出现?
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
public String toString(){//里面的内容是你想输出a[i]的格式.
}
但println却没有这样一个重载方法
于是认为是一个object,将OverloadedConstructor转型为object 调用下列方法
public void print(Object obj) {
write(String.valueOf(obj));
}
然后调用String.valueOf(Ojbect o)方法
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
不为空着则调用对象的toString()方法。
你的类没有覆盖toString方法
所以就调用了Object本身的toString()
return s;
}
public String toString() {
return "某个OverloadedConstructor类";
} OverloadedConstructor() {
System.out.println("Default constructor");
}
OverloadedConstructor(String s) {
System.out.println("String arg constructor");
System.out.println(s);
}
public static void main(String args[]) {
OverloadedConstructor[] a=new OverloadedConstructor[5];
a[0]=new OverloadedConstructor();
a[1]=new OverloadedConstructor("I");
a[2]=new OverloadedConstructor("Am");
a[3]=new OverloadedConstructor("A");
a[4]=new OverloadedConstructor("Good boY!");
for(int i=0;i<5;i++)
System.out.println(a[i]);
}
}
String w ;
public String toString(){
return w+"";
} OverloadedConstructor() {
System.out.println("Default constructor");
}
OverloadedConstructor(String s) {
w =s ;
System.out.println("String arg constructor");
System.out.println(s);
}
public static void main(String args[]) {
OverloadedConstructor[] a=new OverloadedConstructor[5];
a[0]=new OverloadedConstructor();
a[1]=new OverloadedConstructor("I");
a[2]=new OverloadedConstructor("Am");
a[3]=new OverloadedConstructor("A");
a[4]=new OverloadedConstructor("Good boY!");
for(int i=0;i<5;i++)
System.out.println(a[i]);
}
}
return s;
}
不能有参数的
static String s;
public String toString() {
return s;
} OverloadedConstructor() {
this.s="Default";
System.out.println("Default constructor");
}
OverloadedConstructor(String s) {
this.s=s;
System.out.println("String arg constructor");
System.out.println(s);
}
public static void main(String args[]) {
OverloadedConstructor[] a=new OverloadedConstructor[5];
a[0]=new OverloadedConstructor();
a[1]=new OverloadedConstructor("I");
a[2]=new OverloadedConstructor("Am");
a[3]=new OverloadedConstructor("A");
a[4]=new OverloadedConstructor("Good boY!");
for(int i=0;i<5;i++)
System.out.println(a[i]);
}
}可是输出又变成了这样:
Default constructor
String arg constructor
I
String arg constructor
Am
String arg constructor
A
String arg constructor
Good boY!
Good boY!
Good boY!
Good boY!
Good boY!
Good boY!
最后怎么会是5个Good boy!是因为static吗?