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 呢?

解决方案 »

  1.   

    Test t=new Teset();
     char ch='y';//char是字符按ASC||编码可以用整形表示。你改成String ch="y";这样就对了
     t.test(ch);
      

  2.   

    构造器都写错..你想输出 i am a String 你也要传1个String阿.你传的是char..肯定跑上面的拉
      

  3.   

    OH,这确实跟构造方法没有一点关系,你只是创建了Test的一个对象,调用了他的
    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");
     }
      

  4.   

    t.test(ch)这个方法里放的是char类型的 为什么会执行void test(int i)方法呢?
      

  5.   

    朋友。你记错了吧。构造方法是没有返回值的,你看你的喃?你的原因是char可以转型成int类型,就调用了  void test(int i){
      System.out.println("i am an it");
     }
      

  6.   

    你试试这个System.out.println('a'+1);就知道为什么
      

  7.   

    这个跟 构造函数没关系
    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
     }
     
    }
      

  8.   

    楼主刚学java吧,首先你这程序根本就不能运行。
    一个问题是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);
    }
    }
      

  9.   

    其实楼主想问的是为什么char会自动转换成int执行test(int i)而不是转换成String执行test(String s),对吧?我的理解就是,char虽然是字符型,和String有点像。
    但char毕竟只表示单个字符,只占两位。
    那么它就有个固定的范围,而且这个范围在int型范围之内。而String就没有一个范围了,如果把char转换成String,就有点浪费空间的感觉。
    所以编译器会自动把char转换为int,而执行test(int i)方法。