Java面向对象之变量
成员变量和局部变量
类体分为两个部分:变量的声明和方法的定义。我们将在方法中声明的变量和方法的参数称为局部变量,将在类中(方法体外)生成的变量称为类的成员变量。
变量的类型
成员变量和局部变量可以是java中任何一种数据类型,包括:整型、浮点型、字符型、数组、对象、接口等。例如:
class Person{
int age;
String name;
void talk(){
boolean cool;
Man man_1;
}
}
class Man{
int age;
}
变量的作用域
-
成员变量作用域为整个类,其有效性与成员变量出现的位置无关
-
局部变量作用域为其声明的方法内,方法内的局部变量作用域为其声明位置到方法结束位置
-
方法的参数在整个方法内有效
-
复合语句中的局部变量的作用域为当前符合语句中
-
循环语句中的局部变量作用域只在当前循环语句中
class A{ int age; // 成员变量,作用域为整个类 void talk(int num){ // num 参数,作用整个talk方法中 int phone; // 局部变量,作用这个talk中 if (age < 18){ int data; // data 仅作用于当前符合语句中 } for (int i = 0;i<100;i++){ i ++ ; // i仅作用于循环语句中 } age = i + data // i 和 data已经失效 int num1 = 11; int addInt(int num1, int num2){ return num1 + num2; // 成员变量其有有效性与成员变量出现的位置无关 } int num2 = 12; } }
实例变量与类变量
成员变量可以分为实例变量和类变量(静态变量),在声明时使用static修饰的为类变量(静态变量),否则称为实例变量
class B{
static int age; // 类变量(静态变量)
float x; 实例变量
}
注意:
如果出现成员变量和局部变量名称相同时,成员变量会被隐藏,方法中会使用局部变量。如果要想在方法中使用成员变量则需要使用this关键字。
class Bob{
int x =98,y;
void addInt(){
int x = 3;
y = x; // 此处y为3
}
void addI(){
int x = 11;
y = this.x; // 此处y为98
}
}