【Java 学习】详讲 局部变量、成员变量

1. 什么是成员变量?什么是局部变量?

局部变量成员变量 是两种常见的变量类型,它们在作用域、生命周期、初始化等方面有显著的区别。理解这两者的区别对于编写清晰和高效的 Java 程序至关重要。

  1. 创建局部变量,然后打印局部变量:

    ```java
    

    public static void main(String[] args){
    String brand; // 品牌
    String color ; // 颜色
    int memory; // 内存
    System.out.println("brand:"+ brand);
    System.out.println("color:"+ color);
    System.out.println("memory:"+ memory);

    }
    

    ```

在这里插入图片描述
不初始化就会报错

  1. 创建一个类,在类中创建成员变量,然后创建对象,打印出对象的成员变量:

    ```java
    

    public class Phone {
    String brand; // 品牌
    String color ; // 颜色
    int memory; // 内存

    // 程序的开始
    public static void main(String[] args){
        Phone p = new Phone();
        System.out.println("brand:"+ p.brand);
        System.out.println("color:"+p.color);
        System.out.println("memory:"+p.memory);
    
    }
    

    }

    ```

在这里插入图片描述
不初始化,而打印出了值
在这里插入图片描述

通过上述的两个测试,我们可以发现,在类中创建的成员变量有默认值,即,成员变量不用初始化就会有一个值,而局部变量必须手动赋值。

2. 成员变量

2.1 定义和特点

成员变量是类中的字段(属性),它们是类的组成部分。

成员变量有两种类型

  1. 实例变量 (Instance Variables):属于类的实例(对象),每个对象有一份独立的实例变量。
  2. 类变量 (Class Variables):使用 static 关键字声明,属于类本身,而不是类的任何实例。

2.2 实例变量

  1. 实例变量是类中定义的字段,每个类的实例(对象)都有自己的实例变量副本。
  2. 实例变量在对象创建时被分配内存,每个对象都有独立的实例变量。
  3. 实例变量具有默认值:如果未显式初始化,实例变量会根据其类型自动赋予默认值(例如,int 类型默认为 0,boolean 默认为 false,对象引用类型默认为 null)。
  4. 实例变量在类的实例化期间存在,当对象被销毁时,实例变量也会被销毁。

示例:

```java
public class Example {
    private int x;  // 实例变量 默认值为0

    public void printX() {
        System.out.println(x);  // 访问实例变量
    }
}


```

在这个例子中,x 是实例变量。每当你创建一个 Example 对象时,都会为每个对象分配一个 x 变量,并且每个对象有自己的 x 值。

2.3 类变量

  1. 类变量使用 static 关键字声明,它们属于类本身,而不是类的实例。
  2. 类变量在类加载时就会被初始化,并且所有类的实例共享同一个类变量。
  3. 类变量有默认值,如果未显式初始化,它们也会被赋予默认值(与实例变量相同)。

示例:

```java
public class Example {
    static int count;  // 类变量

    public void increment() {
        count++;  // 访问类变量
    }
}


```

在这个例子中,count 是类变量。所有Example 类的实例共享同一个 count 变量,类变量在类加载时初始化。

2.4 成员变量的默认值

数据类型 默认值
byte 0
char ‘\u0000’
short 0
int 0
long 0L
boolean false
float 0.0f
double 0.0
reference null

3. 局部变量

3.1 定义和特点

  1. 局部变量是在方法、构造方法、或者代码块内定义的变量。
  2. 局部变量的作用域仅限于它们被声明的代码块或方法。
  3. 局部变量没有默认值,必须在使用前初始化。
  4. 局部变量的生命周期从其定义开始,到方法或者代码块执行完毕时结束。换句话说,局部变量只存在于方法或代码块的执行过程中,一旦方法返回或代码块执行完毕,局部变量会被销毁。

3.2 示例和说明

```java
public class Example {
    public void myMethod() {
        int x = 10;  // x 是局部变量 必须要被初始化
        System.out.println(x);  // 可以使用局部变量
    }
}


```

在这个例子中,x 是局部变量,它只在 myMethod() 方法内部存在。当方法执行完毕,x 会被销毁。

关键特点

  • 作用域:局部变量的作用域限制在其所在的方法、构造方法或代码块内。
  • 初始化:局部变量在使用前必须被显式初始化。否则,编译器会报错。
  • 生命周期:局部变量的生命周期是方法或者代码块的执行周期,即方法/代码块开始执行时创建,结束时销毁。

注意事项

  • 局部变量的作用域仅限于方法内,因此它不能被方法外部访问。
  • 局部变量不能声明为 static,因为它的生命周期与方法的调用有关,而不是与类的实例或类本身的生命周期有关。

4. 局部变量 vs 成员变量

特性 局部变量 成员变量 (实例变量/类变量)
定义位置 方法、构造器、代码块中 类中,方法外
初始化 必须显式初始化 会自动初始化为默认值(实例变量/类变量)
作用域 仅限于所在的方法/代码块 实例变量:限于对象;类变量:限于类
生命周期 方法/代码块执行期间 实例变量:对象的生命周期;类变量:类的生命周期
访问修饰符 无法使用访问修饰符 可以使用访问修饰符 publicprivate
是否与类相关 实例变量与对象相关;类变量与类本身相关
静态关键字 不可以是 static 类变量必须是 static

局部变量 :只在方法、构造方法、或代码块内有效,必须显式初始化,并且生命周期仅限于方法或代码块执行时。

成员变量 :包括实例变量和类变量,实例变量属于对象,类变量属于类,成员变量有默认值,生命周期较长,且可以使用访问修饰符来控制访问权限。

版权声明:程序员胖胖胖虎阿 发表于 2024年12月30日 上午1:12。
转载请注明:【Java 学习】详讲 局部变量、成员变量 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...