类内部方法外部定义的变量为成员变量,方法内部定义的变量为局部变量。
局部变量为基本数据类型(int,long,string,double等)的存储在虚拟机栈中,相应的数据也存放在栈中。
局部变量为引用类型(new)的变量本身存储在虚拟机栈中,相应的引用对象存放在堆中。
成员变量存储在该类在堆中生成的对象中。
方法的形参同局部变量管理。
局部变量在虚拟机栈中,属于线程私有,不会出现线程安全问题(前提是引用类型的对象没有发布逸出的情况下),随方法的执行结束消失(引用类型的变量本身消失,引用的对象等待垃圾回收处理)。
成员变量在堆中,属于共享内存,会出现线程安全问题,所以在多线程的使用中需要考虑同步处理,在对象引用释放之后等待垃圾回收处理。