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 

  • 相关阅读:
    Flutter form 的表单 input
    FloatingActionButton 实现类似 闲鱼 App 底部导航凸起按钮
    Flutter 中的常见的按钮组件 以及自 定义按钮组件
    Drawer 侧边栏、以及侧边栏内 容布局
    AppBar 自定义顶部导航按钮 图标、颜色 以及 TabBar 定义顶部 Tab 切换 通过TabController 定义TabBar
    清空路由 路由替换 返回到根路由
    应对ubuntu linux图形界面卡住的方法
    [转] 一块赚零花钱
    [转]在树莓派上搭建LAMP服务
    ssh保持连接
  • 原文地址:https://www.cnblogs.com/arrows/p/10407759.html
Copyright © 2011-2022 走看看