zoukankan      html  css  js  c++  java
  • Java中的作用域

    在计算机程序中,声明在不同地方的变量具有不同的作用域,例如局部变量,全局变量等。在java中作用域是有花括号的位置决定的,它决定了其变量名的可见性与生命周期。

    java中变量类型主要有3种:成员变量,静态变量和局部变量。

    类的成员变量的作用域与类的实例化对象的作用域相同,当类被实例化时,成员变量就会在内存中分配空间并初始化,直到该实例的生命周期结束,成员变量的生命周期才会结束。

    被static修饰的成员变量被成为静态变量或全局变量,静态变量不依赖特定的实例,而是都有实例共享的,它是在类被加载的时候jvm就会给类的静态变量分配存储空间。

    局部变量就是方法中定义的变量,其可见性和生命周期是所在的花括号。

    成员变量或方法也有4种作用域:

    1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用
    2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。

    3、缺省 

    变量或者方法前没有访问修饰符时,可以被所在类访问,可以被同一包内的其他类访问 或者继承。但是不能被其他包访问

    4、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。

    访问修饰符作用域/范围

    当前类

    同一package

    子孙类

    其他package

    Public

    protected

    ×

    缺省

    ×

    ×

    private

    ×

    ×

    ×

    这四种修饰符不能用来修饰局部变量,private、protected不能用来修饰类(只有public、sbstract、final可以用来修饰类)。

    一个java文件中最多只能有一个类是public修饰,并且这个类名必须与文件名保持一致。

    如果java文件中的所有类都没有用public修饰,那么文件名可以与类名不一致。。

    静态修饰符的特点:

    static是一个修饰符,用于修饰成员(成员变量和成员函数)

    静态成员随着类的加载而加载。
    静态成员优先于对象存在。
    静态成员被所有对象所共享
    静态成员多了一个中调用方式,可以被类名直接调用。

    静态使用的注意事项。
    静态方法只能访问静态成员, 非静态方法既可以访问静态又可以访问非静态。
    静态方法中不可以定义this,super关键字。因为this代表是对象。而静态存在时,有可能没有对象。所以静态方法运行时,this是没有任何对象代表的。
    简单说,先进内存的数据不可以访问后进内存的数据,可是后进内存数据可以访问先进内存的数据。

    主函数是静态的
    静态的优缺点

    优点: 静态成员多了一种调用方式。可以直接被类名调用 格式 :类名.静态成员。也可以被对象调用。
    弊端 : 静态方法只能访问静态成员,出现了访问局限性。

    静态修饰的数据对象共享的数据,存放在方法区的静态区中。
    非静态的数据,是每一个对象特有数据。存放在对象的所属的堆内存中。

    当成员变量被静态修饰后,和非静态成员变量的区别:

    静态变量也称为类变量,也就是直接可以被类名调用的变量。这个变量是所属于类的。
    非静态变量成为成员变量,或者实例变量,是被对象调用的,是所属具体对象的。
    静态变量随着类的加载而加载,也意味着随着类的消失而消失。生命周期最长。
    实例变量,随着对象的创建而加载,随着对象的消失而消失。按照对象的生命周期而存在。
    静态变量存储在方法区的静态区中。
    实例变量存在于对象所属的堆内存中。
    静态变量数据,被所有对象所共享。
    实例变量是对象中的特有数据

    https://blog.csdn.net/yxy_myfields/article/details/76422952 

  • 相关阅读:
    细叠子草—蛤蟆皮草
    JQuery修改对象的属性值
    设计专用色系,挺不错的值得借鉴
    PDF如何自动滚动阅读
    给初级拍摄者的十条好建议
    每天一个linux命令(45):route命令
    每天一个linux命令(44):ifconfig命令
    每天一个linux命令(43):lsof命令
    每天一个linux命令(42):crontab命令
    每天一个linux命令(41):at命令
  • 原文地址:https://www.cnblogs.com/arrows/p/10407759.html
Copyright © 2011-2022 走看看