成员变量与局部变量

简介: 成员变量与局部变量

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

成员变量

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

1.类成员变量: 使用 static 修饰的字段

2.实例成员变量: 没有使用 static 修饰的字段

3.在方法不能定义 static 变量,static 属于类

方法属于对象。

局部变量

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

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

成员变量与局部变量区别

变量的初始值

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

变量的使用域

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

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

作用域及生命周期

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

变量使用注意点

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("米饭");
  }
}
相关文章
类成员指针和类成员变量指针
类成员指针和类成员变量指针
113 0
|
1月前
|
存储 Java
静态变量与实例变量的区别
【10月更文挑战第15天】总之,静态变量和实例变量在 Java 中具有不同的特性和用途。理解它们的区别对于正确设计和编写代码至关重要。
|
1月前
|
Java
静态变量和实例变量区别
静态变量: 静态变量由于不属于任何实例对象,属于类的,所以在内存中只会有一份,在类的加载过程中,JVM只为静态变量分配一次内存空间。 实例变量: 每次创建对象,都会为每个对象分配成员变量内存空间,实例变量是属于实例对象的,在内存中,创建几次对象,就有几份成员变量。
|
2月前
|
编译器 开发者
什么是局部变量
【10月更文挑战第12天】什么是局部变量
76 1
|
2月前
|
CDN
局部变量
【10月更文挑战第3天】局部变量。
19 3
|
5月前
成员变量、局部变量和静态变量的区别
成员变量、局部变量和静态变量的区别
30 0
|
7月前
|
Java
局部变量和成员变量
局部变量和成员变量1.定义的位置不一样【重点】局部变量:在方法的内部成员变量:在方法的外部,直接写在类当中2.作用范围不一样【重点】局部变量:只有方法当中才可以使用,出了方法就不能再用成员变量:整个类全都可以通用。3.默认值不一样【重点】局部变量:没有默认值,如果要想使用,必须手动进行赋值成员变量:如果没有赋值,会有默认值,规则和数组一样4.内存的位置不一样(了解)局部变量:位于栈内存成员变量:位于堆内存5生命周期不一样(了解)局部变量:随着方法进栈而诞生,随着方法出栈而消失成员变量:随着对象创建而诞生,随着对象被垃圾回收而消失当方法的局部变量和类的成员变量重名
|
7月前
|
编译器
static关键字修饰成员变量与成员函数
1. static概念 声明 为static的类成员称为类的静态成员,用static修饰的成员变量,称为静态成员变量;用static修饰的成员函数,称为静态成员函数,都存放在堆区。 静态成员变量一定要在类外进行初始化。
132 0
Thymelead th:with 局部变量
Thymelead th:with 局部变量
133 0