声明:本文首发于我的个人微信公众号【Java编程社区】,查看更多文章与学习资源请移步我的公众号Java编程社区
成员变量:定义在类中的变量。
局部变量:定义在方法中的变量。
成员变量与局部变量的区别:
1、应用范围
成员变量在整个类中有效
局部变量只在其声明的方法中有效
2、生命周期
成员变量:它属于对象,它随着对象的创建而创建,随着对象的消失而消失
局部变量:使用完马上释放空间
看段代码
void show(int id){
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
System.out.println(id);
}
}
}
这里的id,i,j都是在方法内声明的,因此都是局部变量
id在show方法被调用时它的生命周期开始,方法结束时id消失
j当里层for循环执行时生命周期开始,当里层for结束,j消失
3、存储位置
成员变量属于对象,它存储在堆内,堆内的实体,当没有引用指向其时,才被垃圾回收处理。
局部变量存在于栈内存中,当不在使用时,马上就会被释放。
4、初始值
成员变量它存储在堆中,如果没有赋初值,它有默认值
- 整数byte,short,int,long = 0
- char = 'u0000'
- boolean = false
- String = null
- float,double = 0.0
局部变量要想使用必须手动初始化
注意事项:
局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
内存分析
class Car {
//汽车应该具备的属性
String color;
//汽车具备的颜色
int num;
//汽车跑的行为
public void run(){
System.out.println(color + "的车,轮胎数: " + num + "个,跑起来了");
}
}
public class CarDemo {
public static void main(String[] args) {
//创建实体
Car car = new Car();
car.color = "red";
car.num = 4;
//指挥车运行,调用格式:对象.对象成员
car.run();
}
}
这里car其实是对象的引用,它存储的是一地址,这个地址指向了堆里的一块内存。这里的color和num都是成员变量,null和0是它们的默认值,"red"和4是赋给它们的初始值。
最后再来看个例子
class Variable {
int a; //成员变量a,默认值是0
public void test() {
int b = 20;//局部变量b,没有默认值,需要初始化
System.out.println(b);//20
int a = 50;//局部变量a,和成员变量a的名称相同
System.out.println(a);//50
}
}
class VariableDemo {
public static void main(String[] args) {
Variable variable = new Variable();
System.out.println(variable.a); //0,variable.a访问成员变量
variable.test();//调用成员方法
}
}
代码执行结果:
今天就分享到这,后续会继续分享,敬请期待!
声明:本文首发于我的个人微信公众号【Java编程社区】,查看更多文章与学习资源请移步我的公众号Java编程社区
网友评论