zoukankan      html  css  js  c++  java
  • Java中成员变量、局部变量、全局变量、静态变量、成员变量

    开头注意:static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。

    根据定义变量位置的不同,可以将变量分为成员变量和局部变量。

    成员变量是 定义在一个类的变量:类中方法外
    局部变量是定义在一个方法内的变量:方法中

    成员变量分为:
    静态属性:随类的存在而存在,是在类加载的初始化
    非静态属性:随实例的属性存在而存在。

    局部变量:
    局部变量不能加static,包括protected, private, public这些也不能加。局部变量保存在栈中。
    局部编程必须在声明时初始化。

    成员变量和局部变量区别:
    成员变量可以不显式初始化,它们可以由系统设定默认值;局部变量没有默认值,所以必须设定初始赋值。
    成员变量存在于堆内存,局部变量存在于栈内存。

    静态变量:类中方法外,用static修饰
    生命周期:JVM第一次读到这个类并加载类时开始,类销毁不存在。
    类加载过程:

    加载父类(如果父类已经加载过,则不在加载)。
    初始化静态属性 。
    按顺序的初始化静态代码块 初始化的前提就是分配空间 。
    静态变量存在于方法区即静态区(方法区包含整个程序中唯一存在的元素)

    全局变量(在java中可以理解为用static final修饰):在java中全局变量也称成员变量,是创建对象的时候分配内存的。全局常量存于全局数据区。
    创建对象过程为:

    分配空间。
    创建父类对象。
    初始化成员变量。
    调用构造方法创建一个对象。
    方法(包括静态方法)中不能有静态变量,方法中存在的是局部变量,而不是静态变量。静态变量是定义在类中,方法体外面的。


    实例变量:定义在类中但在任何方法之外。

    当一个对象被实例化之后,每个实例变量的值就跟着确定;

    实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
    实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
    访问修饰符可以修饰实例变量;实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
    实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
    实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObjectReference.VariableName。
     实例变量与局部变量异同
    局部变量:定义在方法之中的变量。
    1. 局部变量要先赋值,再进行运算,而实例变量均已经赋初值。(这是局部变量和实例变量的一大区别)
    2. 实例变量的对象赋值为null。
    3. 局部变量不允许范围内定义两个同名变量。实例变量的作用域在本类中完全有效,当被其他的类调用的时候也可能有效。
    4. 实例变量和局部变量允许命名冲突。
  • 相关阅读:
    数学系列:数学在计算机图形学中的应用
    数学系列:数学体系概览
    Math: Fibonacci
    算法系列:电磁频谱划分
    计算机系列:CUDA 深入研究
    算法系列:寻找最大的 K 个数
    算法系列:000
    算法系列:三元组和
    算法系列:单链表逆序
    堆栈区别
  • 原文地址:https://www.cnblogs.com/1994xlai/p/12989477.html
Copyright © 2011-2022 走看看