成员变量和局部变量 成员方法和构造方法


成员变量

定义在类里方法外的变量。

成员变量又分为实例变量(全局变量)和类变量

类变量也叫静态变量,变量前加static ;

实例变量也叫对象变量,不加static ;

类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;

而实例变量则为对象私有,某一个对象将其值改变,不影响其他对象;

类变量:访问类变量用对象名. 类变量名 或 类名.类变量名

所有对象的同一个类变量都是共享同一块内存空间的

实例变量:只能通过对象,对象名.实例变量名, 而且所有对象的同一个实例变量是共享不同的内存空间的

成员变量的存储:没有实例化的成员变量放在栈中;实例化后的对象放在堆中,栈中放的是指向堆中对象的引用地址。

成员变量在对象被创建时而存在,当对象被GC回收时消失,生存周期适中。

static修饰的全局变量存放于静态区,类加载时创建,在类中只有一份; 会跟着类的消失而消失,生存时间较长。

static修饰的全局变量,只在该源文件中可用

局部变量:

局部变量就是方法里定义的变量。只在定义它的方法内有效,生命周期短

可分为以下三种:

  • 方法参数变量(形参):在整个方法内有效。
  • 方法局部变量(方法内定义): 从定义这个变量开始到方法结束这一段时间内有效。
  • 代码块局部变量(代码块内定义):从定义这个变量开始到代码块结束这一段时间内有效。

基本数据类型变量放在栈中,引用数据类型放在堆中

局部变量可以先定义再初始化,也可以定义的同时初始化,局部变量没有默认初始值。

成员变量有默认值,局部变量没有默认值,不会自动赋值。局部变量在使用前必须被程序员主动的初始化,和此形成对比,

系统中的成员变量则会被系统提供一个默认的初始值。所以在语法上,类的成员变量能够定义后直接使用,

而局部变量在定义后先要赋初值,然后才能使用。

如果局部变量和成员变量的名称相同,那么成员变量被隐藏,即方法内失效,方法中如需要访问该类中的成员变量,则需要加上关键字this

成员方法和构造方法:

成员方法

声明成员方法可以定义类的行为。成员方法一旦被定义,便可以在程序中多次调用。

[public|private|protected][static]<void|return_type>>([paramList]) {

  //方法体

}

[public|private|protected]   //访问类型。

<void|return_type>  //返回值的数据类型

>  //方法名

([paramList])     //参数表

不能省略的部分:

<void|return_type>>(有参或无参) {

  //方法体;

}

其中 retum_type 是方法返回值的数据类型,数据类型可以是原始的数据类型,

即常用的 8 种数据类型,也可以是一个引用数据类型,如一个类、接口和数组等