Java 我能知道类变量和构造函数中声明的变量之间的区别吗?
我想知道类变量和构造函数中声明的变量之间的区别。例如:Java 我能知道类变量和构造函数中声明的变量之间的区别吗?,java,variables,scope,Java,Variables,Scope,我想知道类变量和构造函数中声明的变量之间的区别。例如: class A { int a; } vs 当你这样做的时候 class A { int a; } 整数a可以被类a中的任何其他实例方法访问,该类的任何子对象(一些包限制)也可以被访问 所以主要的区别是变量的范围 另一方面。。。当你这样做的时候 public A() { int a; } 只要构造函数返回…在类a{int a;}中,变量a就不在该范围内。变量a在整个
class A {
int a;
}
vs
当你这样做的时候
class A {
int a;
}
整数a可以被类a中的任何其他实例方法访问,该类的任何子对象(一些包限制)也可以被访问
所以主要的区别是变量的范围
另一方面。。。当你这样做的时候
public A() {
int a;
}
只要构造函数返回…在
类a{int a;}
中,变量a就不在该范围内。变量a
在整个类中由您将在其中实现的所有方法(以及其他包的类,在这种情况下)共享
至于class A{public A(){int A;}}
变量A
只能在构造函数的范围内访问。这意味着当构造函数返回时,它将被销毁
在第一个类中,a
是堆分配的,而在另一个类中,它是堆栈分配的
class A {
int a;
}
该变量可以在类中的任何位置使用
但是,在
class A {
public A() {
int a;
}
}
变量a
只能在函数a()内部访问
所以
但是
类变量有两种类型
静态变量-类级变量
非静态变量-实例变量
构造函数,实例方法可以访问静态和非静态变量,但是构造函数变量和方法变量一样是局部变量,我们不能访问构造函数之外的变量
class A {
public A() {
int 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
}
}