首页 > 基础资料 博客日记

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

2024-12-30 03:00:09基础资料围观58

本篇文章分享【Java 学习】详讲 局部变量、成员变量,对你有帮助的话记得收藏一下,看Java资料网收获更多编程知识

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

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

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

    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);
    
        }
    


    不初始化就会报错

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

    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. 实例变量在类的实例化期间存在,当对象被销毁时,实例变量也会被销毁。

示例:

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

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

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

2.3 类变量

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

示例:

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

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

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

2.4 成员变量的默认值

数据类型默认值
byte0
char‘\u0000’
short0
int0
long0L
booleanfalse
float0.0f
double0.0
referencenull

3. 局部变量

3.1 定义和特点

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

3.2 示例和说明

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

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

关键特点

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

注意事项

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

4. 局部变量 vs 成员变量

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

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

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


文章来源:https://blog.csdn.net/2302_79527141/article/details/144551859
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云