关于java中的变量

我想把java中的变量分为全局变量和局部变量.下面从全局变量和局部变量的角度来看java中的变量.

局部变量:

局部变量的定义:简单说就是定义在方法内,方法的形式参数列表中,for循环的声明中,代码块中的变量.(局部变量出现的位置)

举个生活中的例子,你点了一份外卖,外卖里的一次性筷子就比作变量,你吃完这次外卖你就会扔掉(这里不谈那种循环使用一次性筷子的现象).这里一次性筷子就像局部变量.而全局变量像什么,像家用的筷子.如果你点的外卖不送筷子,需要你自备筷子,那么你就可以使用家用筷子.这种筷子可以用于各种外卖,家用筷子就像全局变量.

局部变量在内存中的位置: 局部变量出现在栈内存中

局部变量的初始化值:局部变量未赋值不能直接使用

局部变量的生命周期:随着方法的调用而产生,随着方法的结束而死亡

小技巧  如何在阅读代码时快速知道变量时成员变量还是局部变量:

如果是没有更改主题的eclipse,全局变量的颜色是细蓝色,自定义常量的颜色是粗蓝色,局部变量的颜色是栗色(具体看编辑器的设置)

全局变量(成员变量):

全局变量的定义:简单说就是定义在类中方法外的变量,也可以称作是成员变量,也可以说是类的属性变量.你实例化这个类后他就一直存在,在这个类里的方法谁都可以调用,当实例化类的对象被销毁后,全局变量跟着销毁.

全局变量在内存中的位置:堆内存中

全局变量的初始化值:可以不初始化,系统会根据其数据类型给予相应的默认值(关于默认值,在Java数组内存分配文章中讲解了)

全局变量的生命周期:随着对象的创建而产生,随着对象的回收而死亡

传说中的静态全局变量(static 成员变量)和非静态全局变量(成员变量):

区别:

首先在格式上,静态全局变量是加了static修饰符修饰了的非静态全局变量;

其次,静态全局变量是随着类的字节码文件在方法区加载而加载产生,随着字节码文件的消失而消失,而非静态全局变量是随着对象的创建而产生,随着对象的回收而死亡.由此可见,静态全局变量的生命周期要比非静态全局变量时间长.

最后,静态全局变量只在类加载时加载一次,存放在方法区中的静态区中,而非静态全局变量随对象创建而加载,每次创建对象,非静态全局变量都要加载到对象在堆中创建的空间中.

关于堆,栈,方法区的内存图,可以参考java数组内存分配这篇文章

猜你喜欢

转载自blog.csdn.net/znmdwzy/article/details/81360465