定义类的成员,包括成员变量和成员方法。
一,成员变量的分类
实例变量:没有static修饰,也叫对象属性,属于某个对象的,通过对象来使用
类变量:有static修饰,也叫类变量,属于整个类的,不是属于某个实例
类变量的值是所有对象共享的,而实例变量的值是每个对象独立的
如何声明成员变量?
【修饰符】 class 类名{
【修饰符】 数据类型 属性名; //属性有默认值
【修饰符】 数据类型 属性名 = 值; //属性有初始值
}
//说明:属性的类型可以是Java的任意类型,包括基本数据类型、引用数据类型(类、接口、数组等)
二,成员方法的分类
成员方法分为两类:
- 实例方法:没有static修饰的方法,必须通过实例对象来调用。
- 静态方法:有static修饰的方法,也叫类方法,可以由类名来调用。
三,成员变量与局部变量的区别
1、变量的分类
- 成员变量
- 静态变量
- 实例变量
- 局部变量
2、区别
1、声明位置和方式 (1)静态变量:在类中方法外,并且有static修饰 (2)实例变量:在类中方法外,没有static修饰 (3)局部变量:在方法体{}中或方法的形参列表、代码块中
2、在内存中存储的位置不同 (1)静态变量:方法区 (2)实例变量:堆 (3)局部变量:栈
3、生命周期 (1)静态变量:和类的生命周期一样,因为它的值是该类所有对象共享的,早于对象的创建而存在。 (2)实例变量:和对象的生命周期一样,随着对象的创建而存在,随着对象被GC回收而消亡, 而且每一个对象的实例变量是独立的。 (3)局部变量:和方法调用的生命周期一样,每一次方法被调用而在存在,随着方法执行的结束而消亡, 而且每一次方法调用都是独立。
4、作用域 (1)静态变量和实例变量:不谈作用域 在本类中,唯一的限制,静态方法或静态代码块中不能使用非静态的,其他都可以直接使用。 在其他类中,能不能使用看修饰符(public,protected,private等) (2)局部变量:有作用域 出了作用域就不能使用
5、修饰符(后面来讲) (1)静态变量:很多 public,protected,private,final,volatile等,一定有的是static (2)实例变量 public,protected,private,final,volatile,transient等 (3)局部变量 final
public,protected,private:权限修饰符 final:是否是常量,即值是否可以修改 volatile:和多线程有关 transient:是否序列化,和IO有关
6、默认值 (1)静态变量:有默认值 (2)实例变量:有默认值 (3)局部变量:没有,必须初始化 其中的形参比较特殊,靠实参给它初始化。