在Java中使用“this”运算符

时间:2013-12-26 04:31:51

标签: java

除了访问与本地变量同名的成员变量之外,是否还有this关键字的其他用法

this.x = x

是否有任何其他情况下使用此关键字是有意义的。

8 个答案:

答案 0 :(得分:9)

this关键字的另一个用途是构造函数链接,例如:

class Person {

    private String name;
    private int age;

    public Person() {
        //Invoking another constructor
        this("John", 35);
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

答案 1 :(得分:6)

您可以将当前对象作为参数传递给另一个方法。

答案 2 :(得分:4)

以下几点取自Java docs

  1. 使用this关键字的最常见原因是因为某个字段被方法或构造函数参数遮蔽。
  2. 在构造函数中,您还可以使用this关键字在同一个类中调用另一个构造函数。

答案 3 :(得分:3)

this表示实例中的当前实例。

对以下内容有用:

  • 从本地识别实例变量(包括参数)
  • 它可以单独用于简单引用成员变量和方法,调用其他构造函数重载。
  • 请参阅实例

适用用途的一些例子(非详尽无遗):

class myClass
{
     private int myVar; 

     public myClass() {
          this(42); // invoke parameterized constructor of current instance
     }

     public myClass(int myVar) {
         this.myVar = myVar; // disambiguate 
     }

     public void another() {
          this.second(); // used "just because"
     }

     private void second() {
          System.out.println("whatever");
     }

}

答案 4 :(得分:2)

您可以引用字段或调用封闭类的方法

public class Examples {
    public class ExamplesInner {
        private int x;
        public ExamplesInner() {
            x = 3; // refers to ExamplesInner.x
            Examples.this.x = 3; // refers to Examples.x
        }
    }

    private int x;
}

For full usage, read the java language specification

  

关键字this只能在实例方法的主体中使用,   实例初始化器或构造函数,或者在初始化器中   类的实例变量。如果它出现在其他任何地方,a   发生编译时错误。

     

当用作主表达式时,关键字this表示值   这是对实例方法所针对的对象的引用   调用(§15.12),或者被构造的对象。

     

这个类型是C类,其中出现关键字。

     

在运行时,所引用的实际对象的类可能是   C类或C的任何子类。

     

关键字this也用于特殊的显式构造函数   调用语句,它可以出现在一个开头   构造函数体(§8.8.7)。

答案 5 :(得分:2)

  • 此关键字可用于引用当前的类实例变量。
  • this()可用于调用当前的类构造函数。
  • 此关键字 可用于调用当前类方法(隐式)
  • 这可以 在方法调用中作为参数传递。
  • 这可以作为传递 构造函数调用中的参数。
  • 此关键字也可用于 返回当前的类实例。

从中找到示例: http://javarevisited.blogspot.in/2012/01/this-keyword-java-example-tutorial.html

答案 6 :(得分:0)

this运算符用作当前正在执行的对象的引用。它关注对象,因此不能也不应该与静态引用一起使用,其中使用类而不是对象。

this运算符可用于调用this()

之类的构造函数

this运算符也避免命名歧义,可用于将当前对象作为函数的引用传递

答案 7 :(得分:0)

this可让您消除私有成员foo与传递到foo的参数constructor之间的歧义:EX

 class bar
 {
     private int foo;
     public Foo(int foo)
     {
        this.foo =foo;
     }
 }