-
在类中的位置不同,成员变量在类中的方法外,局部变量在方法里
-
在内存中的位置不同,成员变量在堆内存中,局部变量在栈内存中
-
生命周期不同,成员变量随着对象的创建而存在,随着对象的消失而消失
局部变量随着方法的调用而存在,方法调用完毕而销毁 -
初始化值不同
- 成员变量有默认值,数值类型默认值为0,浮点类型默认值为0.0,char类型默认值为空字符,boolean类型默认为false,String、数组、对象默认值为null
- 局部变量没有默认值,必须定义,赋值,然后才能使用
-
优先级不同,如果同时存在名称相同的局部变量和成员变量,局部变量优先于成员变量
-
使用范围不同,成员变量因为定义在类中,所以在整个类中都可以使用,局部变量定义在哪里,作用范围就在哪里
public class TestDemo { // 成员变量 static byte b ; static short s ; static int i ; static long l ; static float f ; static double d ; static boolean boo; static char ch; public static void main(String[] args) { System.out.println("byte:"+b); System.out.println("short:"+s); System.out.println("int:"+i); System.out.println("long:"+l); System.out.println("float:"+f); System.out.println("double:"+d); System.out.println("boolean:"+boo); System.out.println("char:"+ch); } }
运行:
TestDemo类中的test方法