Java成员变量与局部变量的区别
1.定义的位置不一样【重点】
局部变量:
定义在方法的内部。
成员变量:
定义在方法的外部,直接写在内当中。
public class Example{
private String name; //成员变量,默认值 null
public void method(){
int no; //局部变量,默认值 0
}
2.作用域不同【重点】
局部变量:
只有方法当中可以用,出了方法就不能用。
成员变量:
整个类全都可以用。
public class Example{
private String name; //成员变量,默认值 null
public void methodA(){
int no; //局部变量,默认值 0
System.out.println(no); //语法错误
}
public void methonB(int num){ //方法参数就是局部变量
System.out.println(no); //语法错误
System.out.println(name);
//参数在方法调用时必然会被赋值。
System.out.println(num);
}
}
3.默认值不一样【重点】
局部变量:
无默认值,若想要使用,必须手动进行赋值。
final修饰变量,可先声明在赋值。
成员变量:
如果没有赋值,会有默认值。
final修饰变量,必须初始化赋值。
public class Example{
private String name; //成员变量,默认值 null
final int m; //语法错误,必须在声明的同时进行复制
public void method(){
int no; //局部变量,默认值 0
final int n;
n=2; //可先声明在赋值
}
4.内存位置不一样【了解】
局部变量:
位于栈内存。
成员变量:
位于堆内存。
5.生命周期不一样【了解】
局部变量:
随着方法进栈而诞生,随着方法出栈而消失。
成员变量:
随着对象创建而诞生,随着对象对垃圾回收而消失。