使用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处理。