考虑一下:
public class Test {
public static int numberOfInstances = 0;
public int myInstanceID;
public String myInstanceName;
静态变量不需要在实例中调用,它在任何地方都可用,如下所示:
Test.numberOfInstances
创建实例时,我只在构造函数中执行此操作:
public Test(int id, String name) {
myInstanceID = id;
myInstanceName = name;
numberOfInstances += 1;
}
我最近发现了 this
关键字并注意到了它的一些用途:
public Test() {
this(numberOfInstances + 1, "newInstance");
numberOfInstances += 1;
}
据我所知,this
关键字允许您调用该类的另一个构造函数。它还允许您执行以下操作:
public Test(int x, int y) {
this.x = x;
this.y = y;
}
对于java,我非常不同意这种风格;相同的变量名,而且我看不出使用 this
的意义,特别是在查看 docs 之后例子。我看这个:
public Test(int a, int b) {
x = a;
y = b;
但是,没有必要使用 this
关键字;在我的代码中,我的类中有一个变量(例如 xCooperative
),其中我不使用 this
关键字(它不是静态的)。
我一直在努力理解非静态变量和 this
变量之间的区别。有区别吗?在我的一门课(乒乓球桨)中,我有这个:
public class Pong {
public int xCoordinate;
public int yCoordinate;
等等...
我从不在任何地方使用 this
关键字,并且数据存储在它自己的实例中。
底线,我的问题是非静态变量和 this.
变量之间有什么区别。这是标准的编码实践吗?为什么我要在非静态变量上使用 this
关键字?
最佳答案
我想你可能已经回答了你自己的问题了。您提供了该功能
public Test(int x, int y) {
this.x = x;
this.y = y;
}
但是,如果你这样写,你认为会发生什么?
public Test(int x, int y) {
x = x;
y = y;
}
注意到我删除了第二个函数中的 this
。因此,x
和 y
仅引用本地 x
和 y
变量。 this
允许您指定您确实想要使用非静态类变量 x
和 y
。
关于java - "this"对象与非静态对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29679339/