public Student(String name, int id)
{
        name = name;
        id = id;
}
这里的name都是局部变量,所以你不写为this.XXX = XXX,那么类里面的XXX永远赋不了值。
假如你
public Student(String name1, int id1)
{
        name = name1;
        id = id1;
}
把局部的变量名命名为和外部的不一样,那或许可以。
我想这里就是作用域的问题了。

解决方案 »

  1.   

    public Student(String name, int id)
    {
            name = name;
            id = id;
    }
    这个表示 从外部传递进来的name 赋值给 外部传递进来的name 即没有赋值给内部本身的namepublic Student(String name, int id)
    {
            this.name = name;
            this.id = id;
    }
    这个表示 从外部传递进来的name 赋值给内部的name
      

  2.   

    public Student(String name, int id)
    {
            name = name;
            id = id;
    }
    如果不用this.name或this.id,程序会以为这个name和id是函数的参数,因为名字一样。
    如果你换成成员变量名应该就可以不用this的!
      

  3.   

    public Student(String name, int id)
    {
            name = name;
            id = id;
    }
    函数体中的两个name都指代函数参数中的name,而非类对象中的name,故不能对对象中的name赋值;
    改为
    public Student(String name, int id)
    {
            this.name = name;
            this.id = id;
    }
    后,由this指明了前一个name是对象中的域,从而获得赋值
      

  4.   

    public Student(String name, int id)
    {
            this.name = name;
            this.id = id;
    }
    和private String name;
    private int id;相同的名字,不能识别
    哪个是对象的哪个是方法的,
    在方法中两个name都是指的
    方法中的参数,所以出现了
    不能够负值的现象,所以如果方法中的
    变量与对象中的变量相同时,一定要将对象中
    的变量加上this,这样就不会有二义性性了。
      

  5.   

    //构造函数
    public Student(String name, int id)
    {
            this.name = name;
            this.id = id;
    }
    构造函数中的参数跟定义的成员变量重名了,在函数体中不知赋给谁,所以必须加个this来区分成员变量.不加this就得把参数换个名字.
      

  6.   

    public Student(String name, int id)
    {
            name = name;
            id = id;
    }-----------------------------------------------------
    这是在给局部变量name赋值
    相当于String name="你传入的值";
           name=name;
      

  7.   

    当在一个函数里的局部变量的变量名和一个外部变量名相同时,
    在函里用变量名引用的是局部变量,
    在这里,想把 class student的属性name赋值,
    所以可以用this(每个class里面指向本身的引用)来引用name,以便给它赋值..如果不用this,相当于把变量本身的值赋给自己,就好像这样:int i=0;i=i;    一点用都没有.