使用Java这个关键字

在类构造函数中,我试图使用:

if(theObject != null) this = theObject; 

我搜索数据库,如果记录存在,我使用Hibernate Query生成的对象。

为什么我不能用this

this不是变量,而是值。 你不能将this作为表达式中的左值。

这是因为’this’不是变量。 它指的是当前的参考。 如果你被允许重新分配’this’,它将不再是’this’,它会变成’那’。 你不能做这个。

因为你不能分配给this

this代表当前的对象实例,即你自己。 您可以this视为对其代码当前正在执行的对象实例的不可变引用。

“this”指的是你的方法被调用的对象实例。

这个关键字保存当前对象的引用。让我们举个例子来理解它。

 class ThisKeywordExample { int a; int b; public static void main(String[] args) { ThisKeywordExample tke=new ThisKeywordExample(); System.out.println(tke.add(10,20)); } int add(int x,int y) { a=x; b=y; return a+b; } } 

在上面的示例中,有一个类名ThisKeywordExample,它由两个实例数据成员a和b组成。 有一个add方法,首先将数字设置为a和b然后返回addtion。

当我们创建该类的对象时,实例数据成员占用内存,并且由我们持有该对象的引用的引用变量加入。 在上面的例子中,我们在main方法中创建了类的对象,并将该对象的引用保存到tke引用变量中。 当我们调用add方法时如何在add方法中访问a和b,因为add方法没有对象的引用。这个问题的答案清除了这个关键字的概念

上面的代码被JVM视为

  class ThisKeywordExample { int a; int b; public static void main(String[] args) { ThisKeywordExample tke=new ThisKeywordExample(); System.out.println(tke.add(10,20,tke)); } int add(int x,int y,ThisKeywordExample this) { this.a=x; this.b=y; return this.a+this.b; } } 

上述更改由JVM完成,因此它会自动将另一个参数(对象引用)传递给方法并将其保存到refrence变量this中,并访问该对象的实例成员抛出此变量。

上面的更改是由JVM完成的,如果你要编译代码然后有编译错误,因为你不得不做任何事情。所有这些都由JVM处理。