成员变量和局部变量

 之前学习的定义变量的操作是直接定义在方法中的,但是其实变量可以定义在类中。变量在Java中大体分为两类:成员变量、局部变量。

栈内存:保存的是局部变量、对象、数组的名称(引用)

堆内存:保存的是全局变量、对象、数组的实例

成员变量

所谓的成员变量其实就是Java中常说的全局变量:

  1. 成员变量定义在类中,在整个类中都可以被访问。
  2. 成员变量随着对象的建立而建立
  3. 成员变量有默认初始化值。

案例: 

public class Person {//这个类表示的是人---->模板---->创建人的对象的模板
//属性
public String name;//表示人的姓名
public int age;//表示人的年龄
public char sex;//表示人的性别
}

上面的name、age、sex这就是直接定义在类中的变量。直接定义在类中的变量就是全局变量。

局部变量

局部变量是定义在局部的变量,一般定义在方法中,语句中等等这些地方的变量都是局部变量

  1. 局部变量只定义在局部范围内,如:方法内,语句内等。
  2. 作用的范围结束,变量空间会自动释放。
  3. 局部变量没有默认初始化值。

案例:

public static void main(String[] args){
int a=23;
System.out.println(a);
}

笔试中常问到(局部变量、全部变量、静态变量的区别)

 1.作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数和循环;

 2.内存存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区中;

 3.生命周期不同:全局变量的生命周期和主程序一样,随着程序的销毁而销毁,局部变量在函数内部或循环内部,随着函数的退 出或者循环退出就不存在了;

 4.使用的方式不同:全局变量声明后程序的各个部分都可以用到,但是局部变量只能在局部使用,函数内部会优先使用局部变量再使用全局变量。