最近在学Java,刚入门,今天看到了静态变量,实例变量和局部变量,然后想总结一下,不当和不全之处请读者指正。部分资料来源于
关于成员变量和局部变量:
成员变量是指定义在类里面的变量;如果该变量前面有static关键词,则其是静态变量或类变量(class variable);如果该变量前面没有static关键词,则其是实例变量(instance variable)。
局部变量是指定义在形参、方法内、以及写的代码块等。
实例变量是属于某个对象的属性,只有创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量;
静态变量不属于某个实例对象,而是属于类,当程序加载了类,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
在程序中,静态变量位于方法区,在内存中只有一处分配区域,Java虚拟机在加载类的过程中为静态变量分配内存,然后被类的所有对象所共享。局部变量的生命周期取决于类的生命周期。而实例变量取决于类的实例。在内存中可以被多次被分配区域,每当创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中。其生命周期取决于实例的生命周期。
本文部分资料来源于网络和公开课。此处推荐斯坦福大学开设的课程——《编程方法》,里面讲的内容十分详实。