zoukankan      html  css  js  c++  java
  • java中成员变量,局部变量,静态变量的辨析

    转自百度:https://baijiahao.baidu.com/s?id=1625360816541592483&wfr=spider&for=pc

    1.java中成员变量,局部变量,静态变量的辨析

    Java中的变量大致分为 成员变量 和 局部变量 两大类。

    成员变量:在类体里面定义的变量称为成员变量;

    如果该成员变量有 static 关键字修饰,则该成员变量称为静态变量或类变量;

    如果该成员变量没有 static 关键字修饰,则该成员变量被称为非静态变量或实例变量。

    局部变量:形参、方法内定义的变量、代码块中定义的变量,都属于局部变量。

    下表是三者的区别:(下面这张图很经典好好理解)注:不要的把成员变量和静态变量混淆在一起,两者区别还是很大的

    2.三者的根本区别在于:所在存储位置的不同决定了不同的特性。

    下面主要介绍一下静态变量的利弊:

    特点:

    1、想要实现对象中的共性数据的对象共享。可以将这个数据进行静态修饰。

    2、被静态修饰的成员,可以直接被类名所调用。也就是说,静态的成员多了一种调用方式。类名.静态方式。

    3、静态随着类的加载而加载。而且优先于对象存在。

    弊端:

    1、有些数据是对象特有的数据,是不可以被静态修饰的。因为那样的话,特有数据会变成对象的共享数据。这样对事物的描述就出了问题。所以,在定义静态时,必须要明确,这个数据是否是被对象所共享的。

    2、静态方法只能访问静态成员,不可以访问非静态成员。因为静态方法加载时,优先于对象存在,所以没有办法访问对象中的成员。

    3、静态方法中不能使用this,super关键字。因为this代表对象,而静态在时,有可能没有对象,所以this无法使用。

    什么时候使用静态变量?

    在程序运行期间,类中的静态变量其内存空间对所有该类的实例是共享的,因此在某些时候,为了节省内存空间开销,共享资源,我们可以将类中的变量声明为静态变量。但是因为静态变量生命周期太长,并且不易被系统回收,所有如果使用不合理,就会适得其反,从而造成大量内存的浪费。因此建议在全部符合下列条件的情况下才使用静态变量:

    (1)变量所包含的对象体积较大,占用内存较多

    (2)变量所包含的对象生命周期较长

    (3)变量所包含的对象数据稳定

    (4)该类的实例有对该变量包含对象的共享需求

    总结:

    尽管三者的本质都是变量,可是使用时却有相当大的区别,稍不留神就可能陷入陷阱。且先记住:在一个类中,如果一个变量能够用来描述一个类的属性,那就定义为成员变量,否则,它就应该定义为局部变量。而如果一个变量在全局中都能使用(某个内容是被所有对象所共享),那么我们就可以把这个变量用static来修饰,即为静态变量。

     

  • 相关阅读:
    一些必不可少的Sublime Text 2插件
    sublime text 使用小技巧
    Azure Queue 和 Service Bus Queue的比较
    怎么使用Windows Azure Queue Storage 服务
    配置 SharePoint 2010 使用本机默认 SQL Server 实例 Pan
    将两个字符串中相同的地方str2无重复的输出
    javascript笔记
    C#中怎样使控件随着窗体一起变化大小(拷来学习)
    在pictureBox中画方格矩阵地图,方法比较笨,有好方法望指导
    通过一个小推理写出的程序,结果出乎意料……有哪位知道为什么吗 已解决
  • 原文地址:https://www.cnblogs.com/bbllw/p/10964589.html
Copyright © 2011-2022 走看看