我想知道构造函数中声明的类变量和变量之间的区别。例如:
class A {
int a;
}
vs
class A {
public A() {
int a;
}
}
答案 0 :(得分:0)
当你做
时class A {
int a;
}
整数 a 可以被A类中的任何其他实例方法访问,并且该类的任何子对象(某些包限制)也可以访问...
因此主要区别在于该变量的范围
另一方面......当你做的时候
public A() {
int a;
}
一旦构造函数返回,变量a就超出了该范围......
答案 1 :(得分:0)
在class A { int a; }
中,变量a
在整个类中共享,通过您将在其中实现的所有方法(以及其他包的类,int,精确的情况)。
至于class A { public A() { int a; } }
,变量a
只能在构造函数的范围内访问。这意味着它在构造函数返回时被销毁。
在第一个类中,a
是堆分配的,而在另一种情况下,它是堆栈分配的。
答案 2 :(得分:0)
在
class A {
int a;
}
该变量可以在类中的任何地方使用
但是,
class A {
public A() {
int a;
}
}
变量a
只能在函数A()
所以
class A {
int a;
public printA() {
Log.i("TEST", a); // will work fine
}
}
但是
class A {
public printA() {
int a;
Log.i("TEST", a); // will work fine
}
public void printA1() {
...
...
Log.i("TEST", a); // will throw an error
}
}
答案 3 :(得分:0)
类变量有两种类型
构造函数,实例方法可以访问静态和非静态变量,但构造函数变量是局部变量,如方法变量,我们无法在构造函数外部访问。