***************************************************
public class Hello
{
     public static void main(String[] args)
    {
        new Hello(); 
    }
     public void Hello(long x)
    {

System.out.println("a");
    }
     public void Hello(int x)
    {

System.out.println("b");
    }
     public void Hello()
    {
System.out.println("c");
    }
    
}
****************************************************
大家帮忙看看这个程序为什么会没有输出?还有关于this的用法不太清楚,希望大家详细讲讲,谢了~~

解决方案 »

  1.   

    你那里边都没调用方法怎么输出。你只是new出来一个对象,如果说要执行方法也是执行默认的构造器,比如:public Hello(){
    }而你那三个方法只是普通的方法,main方法里都没有调用当然不会执行了。
    this的作用是代表当前对象。
      

  2.   

    里面那么多Hello 是要写构造函数么 把前面的void 全去掉
      

  3.   


    public Hello(){}构造方法没有void
      

  4.   

    楼上们正解 你是想让输出 c但是你的构造方法写错了  构造方法没有返回类型的。。
    应该是 public Hello(){}
      

  5.   

    你写的三个Hello()已经不是构造函数了,是普通函数,在new的时候是不会自动调用的。构造函数只需要和类同名即可,没有返回值。
      

  6.   


     LZ 应该是 想在构造函数中传入不同参数,打印不同结果 
    public class Hello {
     public static void main(String[] args)
      {
      new Hello();  
      new Hello(2147483646);
      new Hello(10);
      }
      public  Hello(long x)
      { System.out.println("a");
      }
      public  Hello(int x)
      { System.out.println("b");
      }
      public Hello()
      {
    System.out.println("c");
      }}
      
     结果:c b b
     还有,为什么,我插入 long int 型数,还是打印出字母b
      

  7.   

    你的构造器写错了,多看看书,JDK基础一定要打好,推荐thinking in java 
      

  8.   


    估计jvm 把 2147483646 当成整形处理了吧,相等于 int x = (int)2147483646; 
    哥猜的,望高手答案。。
      

  9.   


    好像2147483646 还在 int 范围内, 被7 楼欺骗了 
      

  10.   

     额,我弄错了,不过当数字大于 2147483647时,提示错误,超出int型范围 难道,传不进 long int 型 的参数,可是明明写好的构造函数,那里出错,求接
      

  11.   

    package test;public class Hello {
    public static void main(String[] args) {
    new Hello(10l);
    new Hello(10);
    new Hello();
    } public Hello(long x) { System.out.println("a");
    } public Hello(int x) { System.out.println("b");
    } public Hello() {
    System.out.println("c");
    }}