class Outer
{
 int outer1=100;{ void test() inner in=new inner(this)
in.display();
}public static void main(String [] args)
{
Outer outer=new Outer();
outer.test();
}
}class inner
{
   Outer outer;
   public inner(Outer outer)
   {
  this.outer=outer;
   } 
void display()
{

System.out.println("outer1="+outer.outer1);
}
}
这段简单的代码,只是输出100这个数字。请问下划线代码中里的this是什么意思。谢谢

解决方案 »

  1.   

    this表示对当前类的实例的引用。
    为了帮助你理解,举下面两个例子:public class Test { public static void main(String[] args) throws Exception{
    String temp = this.getMessage();
    }

    public void main(){
    String temp = this.getMessage();
    }

    private String getMessage(){
    return "You are welcome to JAVA.";
    }
    }在静态方法中用this的话,编译报错。因为静态方法不需要新建类的实例就可以运行。
    而不新建实例的话,当然不会有对实例的引用了。所有说,静态方法中肯定不能用this。
    另外一个例子,JavaBean里经常会有下面的代码:public class Test { String message; public String getMessage() {
    return message;
    } public void setMessage(String message) {
    this.message = message;
    }
    }借助this,你可以区分参数和当前类的同名属性。
      

  2.   

    还是不太明白。从程序运行的正确性来看。inner in=new inner(this) 里的这个THIS应该指的是Outer这个类,否则就不能用System.out.println("outer1="+outer.outer1); ,这是很容易理解的。但问题是,Outer这个类并不是静态的。而代码从头到尾始终没有用NEW这个关键字。outer.outer1是怎么成立的呢?难道inner in=new inner(this)等于inner in=new inner(new Outer)吗?  
      

  3.   

    我明白了。this指的就是当前类的实类。静态类的就不需要this了。
      

  4.   

    Outer outer=new Outer(); outer---->调用outer.test(); ——->这里实际是调用一个inner 类,inner 的构造方法输入的参数是outer这样是给outer赋值。如果说不直观你可心把inner 写成outer类的内部类,就相当于内部类给 Outer outer; 变量初始化一样,