变量: 数据类型 变量名 = 值
成员变量
直接定义在类中,方法的外面,也称全局变量或字段,不要叫属性
1.类成员变量: 使用 static 修饰的字段
2.实例成员变量: 没有使用 static 修饰的字段
3.在方法不能定义 static 变量,static 属于类
方法属于对象。
局部变量
变量除了成员变量,其他都是局部变量
- 方法内部的变量
- 方法的参数
- 代码块中的变量
成员变量与局部变量区别
变量的初始值
- 成员变量: 默认是有初始值的
- 局部变量: 没有初始值,所以必须先初始化才能使用
变量的使用域
- 成员变量:在整个类中都有效
- 局部变量:只在它定义的大括号内生效
成员变量,可以先使用后定义,局部变量必须先定义而后才能使用。
作用域及生命周期
- 变量的生命周期指的是一个变量被创建并分配内存空间开始,到该变量被销毁并清除其所占内存空间的过程,作用域不同,生命周期就不一样
变量使用注意点
1.局部变量定义后,必须显示初始化后才能使用,因为系统不会为局部变量执行初始化操作。这就意味着,定义局部变量后,系统并未为这个变量分配内存空间。直到程序为这个变量赋值时,系统才会为局部变量分配内存,并将初始值保存到该内存中。
2.局部变量不属于任何类或实例,因此它总是保存在其所在方法的栈内存中。
3.基本数据局部变量:直接把这个变量的值保存到该变量所对应 的内存中。引用数据局部变量:这个变量内存中存的是地址,通过该地址引用到该变量实际引用堆里的的对象。
4.栈内存中的变量无需系统垃圾回收,其往往随方法或代码块的运行结束而结束。
public class Person { static int totalNums; String name; int age; int times; void eat(String food) { int a = 10; if(times >= 3) { System.out.println("不能再吃了"); }else { System.out.println("吃了"+ food); times++; } } Person(String n,int a){ name = n; age = a; Person.totalNums++; } public static void main(String[] args) { Person per = new Person("zs",18); System.out.println(Person.totalNums); per.eat("米饭"); } }