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程序的运行结果怎么会是这样子呢?@和后面的字符为什么会出现?
解决方案 »
- 写文件时候的flush()操作什么时候调用好?
- 服务器启动报错
- 不知道为什么错了~~
- 绝世美女,又来了,圣诞带来终极恶梦!英语好,技术强的高手来 (系列七)
- 请帮忙看一下这个程序为什么会产生这样的异常
- 各位,给提供些java的数据结构和算法的例子程序号吗?
- ...............讨论HelloWorld,进来都给分,说的明白的,给高分.......在线等..........
- java对文件读写操作,文件大小有限制么?高手指点!
- 如何设置我的 APPCPATH 环境变量
- applet中如何使用settimeout()
- 请问如何在JAVA中实现“端口关联进程”,解答有分!
- 网页问题求助~~!
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吗?