目录
4.1 如何声明成员变量
-
语法格式:
[修饰符1] class 类名{ [修饰符2] 数据类型 成员变量名 [= 初始化值]; }
-
说明:
-
位置要求:必须在类中,方法外
-
修饰符2(暂不考虑)
- 常用的权限修饰符有:private、缺省、protected、public
- 其他修饰符:static、final
-
数据类型
- 任何基本数据类型(如int、Boolean) 或 任何引用数据类型。
-
成员变量名
- 属于标识符,符合命名规则和规范即可。
-
初始化值
- 根据情况,可以显式赋值;也可以不赋值,使用默认值
-
-
示例:
public class Person{
private int age; //声明private变量 age
public String name = “Lila”; //声明public变量 name
}
4.2 成员变量 vs 局部变量
1、变量的分类:成员变量与局部变量
- 在方法体外,类体内声明的变量称为成员变量。
- 在方法体内部等位置声明的变量称为局部变量。
其中,static可以将成员变量分为两大类,静态变量和非静态变量。
其中静态变量又称为类变量,非静态变量又称为实例变量或者属性。接下来先学习实例变量。
2、成员变量 与 局部变量 的对比
-
相同点
- 变量声明的格式相同: 数据类型 变量名 = 初始化值
-
变量必须先声明、后初始化、再使用。
- 变量都有其对应的作用域。只在其作用域内是有效的
-
不同点
1、声明位置和方式
(1)实例变量:在类中方法外
(2)局部变量:在方法体{}中或方法的形参列表、代码块中
2、在内存中存储的位置不同
(1)实例变量:堆
(2)局部变量:栈
3、生命周期
(1)实例变量:和对象的生命周期一样,随着对象的创建而存在,随着对象被GC回收而消亡,
而且每一个对象的实例变量是独立的。
(2)局部变量:和方法调用的生命周期一样,每一次方法被调用而在存在,随着方法执行的结束而消亡,
而且每一次方法调用都是独立。
4、作用域
(1)实例变量:通过对象就可以使用,本类中直接调用,其他类中“对象.实例变量”
(2)局部变量:出了作用域就不能使用
5、修饰符(后面来讲)
(1)实例变量:public,protected,private,final,volatile,transient等
(2)局部变量:final
6、默认值
(1)实例变量:有默认值
(2)局部变量:没有,必须手动初始化。其中的形参比较特殊,靠实参给它初始化。
3、对象属性的默认初始化赋值
当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。
4:举例
class Person {//人类
//1.属性
String name;//姓名
int age = 1;//年龄
boolean isMale;//是否是男性
public void show(String nation) {
//nation:局部变量
String color;//color:局部变量
color = "yellow";
}
}
//测试类
class PersonTest {
public static void main(String[] args) {
Person p = new Person();
p.show("CHN");
}
}