Java中的成员变量与局部变量(10)

成员变量就是在类中声明的变量,也称为实例变量,它们存储在堆内存当中,可以被类的所有方法访问。
局部变量就是在方法、构造函数或代码块中定义的变量,只能在其所属的作用域内使用,它们存储在栈内存中,当其所属的方法执行完毕后就会被销毁。

1.成员变量

成员变量分为静态变量和实例变量两种。
类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则为对象私有,某一个对象将其值改变,不影响其他对象。

静态变量(类变量)

静态变量是被 static 修饰的,它从该类的准备阶段就存在了,直到系统销毁这个类,静态变量的作用域与这个类的生存范围相同;

static String name; //静态变量

访问方法:

  • 类.静态变量:

Student.name="张三";
System.out.println(Student.name);//输出:张三
  • 实例.静态变量(不推荐):

Student s1=new Student();
Student s2=new Student();
//一般不推荐这样引用静态成员变量:
可以在类的多个方法中共享数据,提高代码的灵活性和复用性。
对象的状态可以通过成员变量来描述和记录。
局部变量:
节省内存空间,避免长时间占用内存。
提供了临时存储数据的功能,方便控制程序流程。变量
s1.name="amber";
s2.name="doris";
System.out.println(s1.name);//输出的是doris,因为两个实例指向的是同一个静态变量

实例变量

实例变量没有 static 修饰,它从该类的实例被创建时就存在,直到系统销毁这个实例,实例变量的作用域与对应实例的生存范围相同

int age;//实例变量

访问方法:

  • 实例.实例变量:

Student s1=new Student();
Student s2=new Student();
s1.age=15;
s2.age=18;
System.out.println(s1.age); //输出:15
System.out.println(s2.age); //输出:18

2.局部变量

局部变量仅作用在局部区域中,从定义开始到大括号或者 return 结束,生命周期短。局部变量可以先定义再初始化,也可以定义的同时初始化,局部变量没有默认初始值,必须要初始化值后才能使用。

错误示例:

public void test(){
    int height;//局部变量
    System.out.println(height);//报错,此时height变量并没有初始化
}

修改后代码:

public void test(){
    int height=185;//局部变量
    System.out.println(height);//height有初始值,故输出185
}

成员变量和局部变量的位置对比

public class Student {
    static String name; //类变量
    int age;  //实例变量
    public void test(){
        int height;  //成员变量
        height=180;
        System.out.println(height);
    }
}

3.成员变量和局部变量区别大总结

区别成员变量局部变量
作用域整个类在其所属的方法、构造函数或代码块内
存储位置堆内存栈内存
生命周期与对象相同,当对象被销毁时才会释放仅限于其所属方法、构造函数或代码块的执行期间
类中声明的位置类中方法外通常在方法中
默认值有默认初始值(如 int 类型为 0)没有默认初始值,必须初始化后才能使用

4.两者使用的注意事项

成员变量的注意事项

  • 应该根据需求选择合适的访问修饰符(如 private、protected、public)来控制其可见性。

  • 需要考虑线程安全问题,可以使用 synchronized 关键字或其他同步机制进行保护。

局部变量的注意事项

  • 在使用前必须显式初始化,否则会编译错误。

  • 不同的方法中可以使用相同名称的局部变量,但不会产生冲突,因为它们具有不同的作用域。

成员变量可以在类的多个方法中共享数据,提高代码的灵活性和复用性,对象的状态可以通过成员变量来描述和记录。局部变量节省内存空间,避免长时间占用内存,提供了临时存储数据的功能,方便控制程序流程。二者都是 Java 中常用的变量类型,合理使用它们可以更好地管理我们的数据和程序流程。

全文完,没关注的烦请加个关注,优质内容持续更新中~

更多技术内容交流,请加入程序员桔子知识星球。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值