成员变量与局部变量的相同点与不同点:
-
成员变量是什么?
例如:
public class Animal {
String name; //成员变量
int age;
}
-
局部变量是什么?
例如:
public void setAge(int age) { //局部变量age
this.age = age;
}
public void addAge() {
int i = 1; //局部变量
age += i;
}
- 相同点:
- 遵循变量声明的格式:数据类型 变量名 = 初始化值
- 都有作用域
- 不同点:
- 声明的位置不同:成员变量:声明在类里,方法外 ;局部变量:声明在方法内,方法的形参部分,代码块内
- 成员变量:成员变量的修饰符有四个:public private protected 缺省(即默认值);局部变量没有修饰符 ,与所在的方法加的修饰符相同
- 初始化值不同:
成员变量:如果在声明的时候,不显式地赋值,那么不同数据会有不同的默认初始化值。
例如:
boolean false
char '/uoooo'(空格)
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d
局部变量:一定要显式地赋值。(局部变量没有默认初始化值)
例如:
int a = 2; //而不能直接写成int a; a += 1;
4.二者在内存中存放的位置不同:成员变量:存在于堆空间中;局部变量:存在于栈空间中
代码:
Person p1 = new Person(); p1.setName("小明"); class Person{ public void setName(String n) { this.name = n; } }
内存图: