当您希望在其所有对象之间共享类的某些属性时,我(认为)使用静态变量。class Person{ private String name; private static int qtdone = 0; private static int qtdtwo = 0; //constructor public Person(){ this.name = "Generic"; this.qtdone ++; qtdtwo++; } public void print_qtd(){ System.out.println("this.qtdone is: " + this.qtdone); System.out.println("qtdtwo is: " + this.qtdtwo); }}public class Main { public static void main(String [] args) { Person one = new Person(); Person two = new Person(); one.print_qtd(); }}返回this.qtdone is: 2qtdtwo is: 2这是我所期望的,因为 qtdone 和 qtdtwo 被“人一”和“人二”修改我不确定 this.qtdone 和 qtdtwo 之间的区别。他们最终做了同样的事情,但我想确认他们是否相同,或者实际上是在做类似(但不同)的事情。
2 回答
慕姐8265434
TA贡献1813条经验 获得超2个赞
可以使用访问静态变量的事实是this
Java 语言的一个奇怪的怪癖。真的没有理由故意这样做。
要么使用不合格的名称qtdone
,要么使用类名来限定它:Person.qtdone
.
使用this.qtdone
有效,但看起来它访问了一个实例字段,即使它没有。事实上,使用这种语法甚至不检查是否this
实际上引用了一个对象:
Person notReallyAPerson = null; notReallyAPerson.qtdone++; // this works!
白猪掌柜的
TA贡献1893条经验 获得超10个赞
this.qtdone等价于qtdone或Person.qtdone。但是this不推荐使用静态访问。
唯一的区别是, qtdone 可能会被局部变量遮蔽。在这种情况下,使用类名进行限定是有意义的:
setQtDone(int qtdone) {
Person.qtdone = qtdone;
}
添加回答
举报
0/150
提交
取消