程序:
class A
{
  String name;
  public A(String x)
  {
   name=x;            //7
   }
 public void func1() //1
  {
   System.out.println("func1 of "+ name +"is calling");
  }
  public void func2() 
  {
   A a2=new A("a2");  //2
   this.func1();       //3
   a2.func1;          //4
  }
}class TestA
{
 public static void main(String[] args)
  {
   A a1=new A("a1"); //5
   a1.func2();        //6
  }
}编译TestA.java后,运行类TestA
结果是: 
func1 of a1 is calling
func1 of a2 is calling问题1: 我把程序行编了号码,请问main执行时候的顺序是怎么样的,用号码表示就ok了
问题2: 每个成员方法内部,都有一个this引用变量,指向调用这个方法的对象。---怎样理解?用例子说明或者生活中通俗的语言
问题3: 程序如下
 class Person

 String name;
 Public Person (String name)
 { this.name=name}
}
  这里面的this是指代的什么?(结合问题2)

解决方案 »

  1.   

    1.
    調用搆造函數,執行第七條語句,創建實例a1,
    接着執行func2()方法,執行第七條語句,創建第二個實例a2,
    執行func1()方法,打印 func1 of a1 is calling 語句
    最后執行a2.func1()方法,打印 func1 of a2 is calling 語句2.
    this指本身,就是自己
      

  2.   

    this就是本身的引用,在对象内部的函数中运用。
      

  3.   

    5,7,6,2,73,1,4,1
    this是谁调用此方法指谁
      

  4.   

    576273141
    每次创建对象时都要去public A(String x)构造对象.
    this指针被隐藏了、不用管他
      

  5.   

    楼主主要是对this 不是很清楚,对于你的程序而言,
    执行到a1.func2(); 时将进入到func2()方法,在该方法内部工有三条语句
    A a2=new A("a2");  //2创建一个A类实例a2,由构造方法可知 a2.name=a2
       this.func1();   //3这里this指的就是上面的a1实例,解释以下,this.func1()这个语句是在
                          方法func2()中,而this指向的是(调用他所在方法)的对象,即调用
                          func2()方法的对象a1.
                          也就相当与执行a1.func1();那么为什么不使用a1.func1()而要使用
                          this.func1()呢,因为你在写方法func1() 的时候并不知道是由哪个
                          实例来调用他所以才产生了this
       a2.func1;    
    我要回家了写的有点急,希望能看懂  
      

  6.   

    this就是  谁调用了那个方法谁就是this
    未调用之前谁也不 知道this会是谁 当你new出那个对象时this就是指代那个对象!
      

  7.   

    this就是对象自己的引用:class A
    {
      String name;
      public A(String x)
      {
       name=x;            //7
       }
     public void func1() //1
      {
       System.out.println("func1 of "+ name +"is calling");
      }
      public void func2() 
      {
       A a2=new A("a2");  //2
       this.func1();       //3 这里指 a1
       a2.func1;          //4  这里指 a2
      }
    }class TestA
    {
     public static void main(String[] args)
      {
       A a1=new A("a1"); //5  对象a1
       a1.func2();        //6 a1调用 func2()方法 
      }
    }结果就是:
    func1 of a1 is calling
    func1 of a2 is calling
    不知道说明白没
      

  8.   

    class Person

     String name;
     Public Person (String name)
     { this.name=name}
    }把当作参数传进来的name传给这个类中定义的name,this.name就是本类的name。
      

  9.   

    jvm先装载类.执行main()函数.
    然后执行5,创建一个a1指向A在堆中创建的对象.
    然后执行7,因为创建对象时首先对成员变量初始化,然后在把显示的值放入堆中的对象.在来才是
    调用构造函数.把参数赋值给成员变量name.
    然后执行6,调用对象的方法.执行2,创建对象a2的引用.执行7执行3在执行1在执行4在执行1..
    那句话意思就是如果有一个对象调用了这个方法.比如a1调用了这个方法fun2那么a1就是this所指向的那个对象的引用句柄.希望你能听明白.呵呵.
    问题3和问题2就相同了.就是如果有一个对象调用了它那调用它的那个对象就是this.你那个还有没对象调用呢.
      

  10.   

    问题1,执行顺序:5,7,6,2,7,3,1,4,1
    问题3,例子中this.name是指Person类中的name属性。
      

  11.   

    1、 576273141
    2、调用此方法的对象 
    3、类Person的实例 谁调用的就指的是谁,this.name就是指代他自己的name成员变量好比说 每个人都有一只左手和一只右手
    一个小组8个人 参加了一个活动,主持人说大家做个动作——用右手(看作参数)拿起一个水果 可以看作是一个方法,右手是参数
    但是每个人都有右手,this确保的是每个人用的右手是自己的
    你做这个动作的时候(执行这个方法)就是用的自己的右手(自己的成员)突然发现这个帖子好久远。。