Java中的“this”是什么意思?
通常,我只在构造函数中使用this
。
我知道它用来标识参数variables(通过使用this.something
),如果它与全局variables具有相同的名称。
但是,我不知道this
是什么在Java中的真正含义,如果我使用this
没有点( .
),会发生什么。
this
是指当前的对象。
每个非静态方法都运行在一个对象的上下文中。 所以如果你有这样的课程:
public class MyThisTest { private int a; public MyThisTest() { this(42); // calls the other constructor } public MyThisTest(int a) { this.a = a; // assigns the value of the parameter a to the field of the same name } public void frobnicate() { int a = 1; System.out.println(a); // refers to the local variable a System.out.println(this.a); // refers to the field a System.out.println(this); // refers to this entire object } public String toString() { return "MyThisTest a=" + a; // refers to the field a } }
然后在new MyThisTest()
上调用frobnicate()
new MyThisTest()
将会打印
1 42 MyThisTest a = 42
所以有效地使用它多个事情:
- 澄清你是在谈论一个领域,当还有一些与领域相同的名字
- 指的是整个当前对象
- 在构造函数中调用当前类的其他构造函数
以下是从这里复制和粘贴,但很好地解释了this
关键字的所有不同用途:
定义: Java的this
关键字用于引用它使用的方法的当前实例。
以下是使用此方法的方法:
-
具体表示使用实例variables而不是静态或局部variables。 那是,
private String javaFAQ; void methodName(String javaFAQ) { this.javaFAQ = javaFAQ; }
这里指的是实例variables。 这里局部variables的优先级高。 因此,缺less
this
表示局部variables。 如果作为参数名称的本地variables与实例variables不相同,则不pipe它是否被使用,都表示实例variables。 -
This
是用来引用构造函数public JavaQuestions(String javapapers) { this(javapapers, true); }
这将调用具有两个参数的相同java类的构造函数。
-
This
用于传递当前的java实例作为参数obj.itIsMe(this);
-
与上面类似,这也可以用来返回当前的实例
CurrentClassName startMethod() { return this; }
注意:这可能会导致在以上两点中使用内部课程时出现不希望的结果。 因为这将引用内部类而不是外部实例。
-
This
可以用来获取当前类的句柄Class className = this.getClass(); // this methodology is preferable in java
虽然这可以通过
Class className = ABC.class; // here ABC refers to the class name and you need to know that!
与往常一样, this
与它的实例相关联,并且在静态方法中不起作用。
为了完整, this
也可以用来指外部对象
class Outer { class Inner { void foo() { Outer o = Outer.this; } } }
它指的是特定对象的当前实例,所以你可以写类似的东西
public Object getMe() { return this; }
在Swing中,写一个实现了ActionListener
的类并将当前实例(即'this')添加为组件的ActionListener是相当普遍的。
public class MyDialog extends JDialog implements ActionListener { public MyDialog() { JButton myButton = new JButton("Hello"); myButton.addActionListener(this); } public void actionPerformed(ActionEvent evt) { System.out.println("Hurdy Gurdy!"); } }
如果你调用myObject.method()
那么this
将引用myObject
里面的method
。
它指的是调用该方法的实例
class A { public boolean is(Object o) { return o == this; } } A someA = new A(); A anotherA = new A(); someA.is(someA); // returns true someA.is(anotherA); // returns false
对象具有从类派生的方法和属性(variables),以便指定哪个方法和variables属于使用this
保留字的特定对象。 在实例variables的情况下,理解隐式参数和显式参数之间的区别是很重要的。 看一下fillTank
调用audi
对象。
Car audi= new Car(); audi.fillTank(5); // 5 is the explicit parameter and the car object is the implicit parameter
括号中的值是隐式参数,对象本身是显式参数,没有显式参数的方法使用隐式参数, fillTank
方法同时具有显式和隐式参数。
让我们仔细看看Car
类中的fillTank
方法
public class Car() { private double tank; public Car() { tank = 0; } public void fillTank(double gallons) { tank = tank + gallons; } }
在这个类中,我们有一个实例variables“tank”。 可能有许多对象使用了tank实例variables,为了指定实例variables“tank”用于特定的对象,在我们的例子中,我们使用了this
保留的关键字。 例如variables在方法中使用“this”表示实例variables(在本例中为“tank”)是隐式参数的实例variables。
java编译器自动添加this
保留字,所以你不需要添加它,这是一个偏好问题。 你不能使用this
没有点(。),因为这些是java的规则(语法)。
综上所述。
- 对象由类定义并具有方法和variables
- 在方法中的一个实例variables上使用
this
表明,实例variables属于隐式参数,或者它是隐式参数的实例variables。 - 隐式参数是在这种情况下调用方法的对象“audi”。
- java编译器自动添加这个保留字,添加它是一个偏好问题
-
this
不能没有点使用(。)这是语法无效的 -
this
也可以用来区分具有相同名称的局部variables和全局variables -
this
保留字也适用于方法,来表示一个方法属于一个特定的对象。
this
是对当前对象的引用: http : //download.oracle.com/javase/tutorial/java/javaOO/thiskey.html
这可以在一些方法或构造函数中使用。
它返回当前对象的引用。
这个关键字是用来引用块的当前variables,例如考虑下面的代码(只是一个示例,所以不要期待标准的JAVA代码):
Public class test{ test(int a) { this.a=a; } Void print(){ System.out.println(a); } Public static void main(String args[]){ test s=new test(2); s.print(); } }
而已。 输出将是“2”。 如果我们不使用这个关键字,那么输出将是:0
这是对当前情况下的对象的有效引用。 例如,要打印出“这个对象”,你可以写:
System.out.println(this);
请注意,您对“全局variables”的使用有些偏离…如果使用this.variableName
那么根据定义,它不是全局variables – 它是特定于此特定实例的variables。
快速谷歌search带来了这个结果: http : //xahlee.org/java-a-day/this.html
很多“this”关键字是对当前对象(本身)的引用。
如果实例variables与在构造函数中声明的variables相同,那么我们使用“this”来分配数据。
class Example{ int assign;// instance variable Example(int assign){ // variable inside constructor this.assign=assign; } }
希望这可以帮助。
我也在寻找同样的答案,不知何故明白无法理解这个概念。 但最后我从这个链接了解它
这是Java中的关键字。 哪些可以在类的方法或构造函数中使用。 它(this)作为对其方法或构造函数被调用的当前对象的引用。 这个关键字可以用来从实例方法或构造函数中引用当前对象的任何成员。
查看链接中的示例以获得清晰的理解
在Java中,“this”是一个预定义的variables。 如果我们在方法中使用“this”,这意味着我们正在获取当前运行的对象的引用(地址)。 举一个例子。
this.age —>当前运行的对象的年龄。