成员变量与局部变量的区别有哪些?

  1. 从语法形式上看:成员变量属于类,局部变量是在方法中定义的变量或方法的参数;成员变量可以使用public、private、static等修饰符进行修饰,而局部变量不能使用访问控制修饰符和static修饰符;然而,成员变量和局部变量都可以被final修饰。
  1. 从变量在内存中的存储方式来看:如果成员变量使用static修饰,那么该成员变量属于类;如果没有使用static修饰,该成员变量属于实例。对象存储在堆内存中。如果局部变量的类型是基本数据类型,它存储在栈内存中;如果是引用数据类型,存放的是指向堆内存对象的引用或指向常量池中地址的引用。
  2. 从变量在内存中的生存时间上看:成员变量是对象的一部分,它随着对象的创建而存在;而局部变量随着方法的调用而自动消失。
  3. 成员变量如果没有被赋初值:则会自动以类型的默认值进行赋值(唯一的例外是被final修饰的成员变量,它必须显式地赋值);而局部变量则不会自动赋值。

标签: java, Java面试题, Java问题合集, Java编程, Java问题精选, Java常见问题