class Test{
void test(int i){
System.out.println("i am an it");
}
void test(String s){
System.out.println("i am a String");
}
public void main(String args[]){
Test t=new Teset();
char ch='y';
t.test(ch);
}
}为什么输出结果是 i am an it 呢?
void test(int i){
System.out.println("i am an it");
}
void test(String s){
System.out.println("i am a String");
}
public void main(String args[]){
Test t=new Teset();
char ch='y';
t.test(ch);
}
}为什么输出结果是 i am an it 呢?
char ch='y';//char是字符按ASC||编码可以用整形表示。你改成String ch="y";这样就对了
t.test(ch);
void test(int i){
System.out.println("i am an it");
}
然后里面打印一句i am an it;就仅仅这样而已,如果你要打印传入的i那么应该这样写
void test(int i){
System.out.println(i + " am an it");
}
System.out.println("i am an it");
}
class Test{
void test(int i){
System.out.println("i am an it");
}
void test(String s){
System.out.println("i am a String");
}
public void main(String args[]){
Test t=new Teset();
char ch='y';
t.test(ch);//这个调用 会将char转换为 int型,所以 调用的是 void test(int i),如果想调用
void test(String s)需要修改为 :t.test(""+ ch) ;//这样会转换为String
}
}
一个问题是main函数一定要是static型的,
另外把Test写成Teset了。其次,构造函数是和类名完全一样,不带返回值的方法,比如:
public Test() {
}
最后,程序最后应该打印出i am an it因为你传入的char类型的'y'会默认转换成int型,再执行test(int i)。给你个完整的小例子吧。
public class Test { public Test() {
} void test(int i) {
System.out.println("i am an it");
} void test(String s) {
System.out.println("i am a String");
} public static void main(String[] args) {
Test t = new Test();
char ch = 'y';
t.test(ch);
}
}
但char毕竟只表示单个字符,只占两位。
那么它就有个固定的范围,而且这个范围在int型范围之内。而String就没有一个范围了,如果把char转换成String,就有点浪费空间的感觉。
所以编译器会自动把char转换为int,而执行test(int i)方法。