0%

成员变量与局部变量

变量: 数据类型 变量名 = 值

成员变量

直接定义在类中,方法的外面,也称全局变量或字段,不要叫属性

1.类成员变量: 使用 static 修饰的字段
2.实例成员变量: 没有使用 static 修饰的字段
3.在方法不能定义 static 变量,static 属于类
方法属于对象。

局部变量

变量除了成员变量,其他都是局部变量

  1. 方法内部的变量
  2. 方法的参数
  3. 代码块中的变量

成员变量与局部变量区别

变量的初始值

  • 成员变量: 默认是有初始值的
  • 局部变量: 没有初始值,所以必须先初始化才能使用

变量的使用域

  • 成员变量:在整个类中都有效
  • 局部变量:只在它定义的大括号内生效

成员变量,可以先使用后定义,局部变量必须先定义而后才能使用。

作用域及生命周期

  • 变量的生命周期指的是一个变量被创建并分配内存空间开始,到该变量被销毁并清除其所占内存空间的过程,作用域不同,生命周期就不一样

变量使用注意点

1.局部变量定义后,必须显示初始化后才能使用,因为系统不会为局部变量执行初始化操作。这就意味着,定义局部变量后,系统并未为这个变量分配内存空间。直到程序为这个变量赋值时,系统才会为局部变量分配内存,并将初始值保存到该内存中。
2.局部变量不属于任何类或实例,因此它总是保存在其所在方法的栈内存中。
3.基本数据局部变量:直接把这个变量的值保存到该变量所对应 的内存中。引用数据局部变量:这个变量内存中存的是地址,通过该地址引用到该变量实际引用堆里的的对象。
4.栈内存中的变量无需系统垃圾回收,其往往随方法或代码块的运行结束而结束。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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("米饭");

}
}
↓赏一个鸡腿... 要不,半个也行↓