认识成员变量和局部变量

有效范围
成员变量:在整个类中都有效,其有效性与它在类体中书写的先后位置无关。
局部变量:只在方法内有效,而且与其声明的位置有关(声明之后开始有效)。
生命周期
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
内存中的位置
成员变量:在堆中
局部变量:在栈中
初始化值
成员变量:有默认值
局部变量:没有默认值,因此在使用局部变量前,必须保证局部变量有具体的值

class InitError{
	/**
	*整形的成员变量:默认值 0
	*浮点型  0.0
	*boolean型 false
	*引用型  null
	*/
	int x = 10 , y;  //y的默认值值0
	void f(){
		int m;  //m局部变量没有默认值,但编译无错
		x = y + m;	//无法通过编译,因为在使用m之前未指定m的值
	}
}

注意点:

  • 当局部变量和成员变量同名时,那么成员变量被隐藏,即该成员变量在这个方法中暂时失效(如果想在方法中使用被隐藏的成员变量,必须使用关键字this)。
class Tom{
	int x = 10 , y;
	void f(){
		int x = 5;
		y = x + x;  //y得到的值是10,不是20
		//y = x + this.x;  // y的值为15
	}
}
  • 对成员变量的操作只能放在方法中。
class A{
	int a = 12;  //声明的同时赋予初值12,可行
	int b;
	b = 12;  //非法,这是赋值语句(语句不是变量的声明,只能出现在方法体中)
}

猜你喜欢

转载自blog.csdn.net/qq_44866169/article/details/107826872