成员变量和局部变量的区别
前面讲类的那一篇博客中有提到成员变量,它也称为全局变量,既然有全局变量,也就有局部变量,让我们看看它们的区别吧。局部变量 | 成员变量 |
---|---|
在方法定义中或方法声明上 | 在类中,方法外 |
在栈中 | 在堆中 |
随着方法的调用而存在,方法调用结束后消失 | 随着对象的创建而创建,随着对象的消失而消失 |
没有默认初始值,需要赋值后,才能使用 | 有默认初始值 |
代码演示
输出name的值(一)
//由于局部变量在main方法中,采取就近原则输出的name就是tom
public class Text {
String name="jim";//成员变量
public static void main(String[] args) {
String name="tom";//局部变量
System.out.println(name);
}
}
结果
tom
(二)
public class Name {
String name="jim"; //成员变量
public void m(String name){
name="tom"; //局部变量
System.out.println(结果是:);
System.out.println(name);
}
}
public class Text {
String name="jim";
public static void main(String[] args) {
Scanner x = new Scanner(System.in);
Name n = new Name(); //创建对象n
System.out.println("请输入名字:");
n.m(x.next()); //调用Name中的方法m
}
}
结果
请输入名字:
Jack
结果是:
tom
Name类中有三个name,一个是成员变量name(jim),一个是参数name,一个是m方法中的name,其实方法中的name和参数name是同一个,因此在键盘中输入Jack后,传给了参数name,方法m中的name又重新赋值为tom,然后采取就近原则,所以最后输出的结果为tom,不过你想要输出成员变量的name,也不是不可以,不过你要在name前加上this这个关键字(this.name),输出的就是jim了