public class Test {

int a;
int b; Test(int _a,int _b) {
this.a=5;
this.b=8;

System.out.print("对象创建成功!");
}
public static void main(String[] args){
        
             Test t = new Test(10,4);
    System.out.print(t.a);//输出的值是5.。怎么不是10??
菜鸟求解释、、、坐等高手解答、、。。}

解决方案 »

  1.   

    你在Test(int _a,int _b)方法中已经把值写死了。
    this.a=5;
    this.b=8;
    改成
    this.a=_a;
    this.b=_b;
    就行了。 
      

  2.   

    这个没什么问题哦 像楼上说的就行了。public class Test {
        
        int a;
        int b;    Test(int _a,int _b) {
            this.a=5;
            this.b=8;
            
            System.out.print("对象创建成功!");
        }
        public static void main(String[] args){
            
                 Test t = new Test(10,4);
            System.out.print(t.a);//输出的值是5.。怎么不是10??
    _a,_b 叫做形参, 什么叫形参呢, 就是一个代号而已  ,你取什么阿猫阿狗都可以 ,
    10,4就是实参 ,这里面如果你想给 变量 赋值这样写  
    this.a=_a;
    this.b=_b;就是把形参的值付给变量a,b  与形参的名字无关 ,当调用方法的时候传入实参,也就是 10,4 就把实参值赋给 a,b了
      

  3.   


    public class Test {
        
        int a;
        int b;    Test(int _a,int _b) {
            this.a=5;
            this.b=8;
            
            System.out.print("对象创建成功!");
        }你这里创建对象传递的参数都没赋给你创建对象的参数。要这样的:public class Test {
        
        int a;
        int b;    Test(int _a,int _b) {
            this.a=_a;
            this.b=_b;
            
            System.out.print("对象创建成功!");
        }
      

  4.   

    this.a 你先看看this这个词的意思。另外编译器对于变量的赋值,会优先局部变量,局部变量没有的话自然会去找成员变量,找不到就编译不通过了
      

  5.   

    this.a=5;this就是这的意思,这都等于5了,那你那个10还有什么用啊,你说对不对!
      

  6.   

    public class Test {
        
        int a=5;//如果初始化这里初始化
        int b=8;    Test(int _a,int _b) {
            this.a=_a;
            this.b=_b;
            
            System.out.print("对象创建成功!");
        }
    另外初始化的意思是没有赋值前不要使用,构造函数里已经给a、b赋值了后,就可以使用了,不用初始化
      

  7.   


    Test t = new Test(10,4);这就说明对TEST进行了实例化,可以调用TEST里面的所有变量,方法. 而带参是为了给其成员变量赋初始值.