• Java中static的作用


        static表示“静态”或者“全局”的意思,用来修饰成员变量和成员方法,也可以形成静态的static代码块,但是Java语言中没有全局变量的概念。
        
        被static修饰的成员变量和成员方法独立于该类的任何对象,也就是说,不依赖类特定的实例,被类的所有实例共享。

        只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何的对象。

        static修饰的成员变量和成员方法习惯上称为静态变量和静态方法,可以直接通过类名访问,

        类名.静态方法(参数)

        类名.静态变量

        所有的类的实例共享静态变量。

        static和final一块用表示什么

        static和final用来修饰成员变量和成员方法,可简单的理解为“全局常量”

        对于变量,表示一旦给值就不可以修改,并且通过类名访问。

        对于方法,表示不可覆盖,并且可以通过类名直接访问。

        要理解Java语言为什么这么设计通常要结合实际的例子要进行考虑。

        比如当你设计一些工具类,你希望这些工具类中的方法被其他类引用,但是你又不希望创建工具类的实例,这时候你就可以将工具类中的方法修饰为static,然后通过 类名.静态方法(参数)的形式去引用它,这样就非常的方便。又比如说,Java的底层定义了很多方法供开发者使用,但是他又不希望开发者复写(override)该方法(他觉得自己已经写的很好了,不希望别人乱改),所有他只好用static final修饰该方法,然后通过 类名.静态方法(参数)引用,这样开发者既能很方便地引用该方法,同时也不会因为其他的原因可能改动该方法(因为人家在设计这个方法的时候压根就不想让你改)。
        
        static修饰成员变量是,比如说创建了一个类,这个类是人。如果你涉及的人都是中国人,那么你可以将这个类的国籍这个成员变量修饰为static,并给它一个默认值为“中国”。那么无论你创建多少个该类的实例,这些实例的国籍属性都是中国,而且它们都指向同一块内存区域。一旦在某个实例中修改了国籍这个属性,其他所有的实例也随之修改。因为它们共享同一块内存区域。如果你不希望这个变量被修改,也不希望后来的开发者乱改,你可以直接将之定义为static final,表示所有的实例都共享这个变量,并且都不允许修改。(你要是改了编译器肯定会报错)
        
        总结,static表示静态的意思。要理解静态要跟动态结合起来,动态是指在运行的过程中可以改变变量的类型和值,那么静态就是指在JVM加载之前就已经定义好了该变量。
        final是指不希望被修改,要是用了final修饰就是指,你最好别再动我了!
        
        最后,不讲为什么这么设计,直接讲就该这么设计的都是耍流氓!
        

























  • 相关阅读:
    day27_递归
    Linux常用命令
    Linux中的标准输入输出文件
    秋招日记《三》——字节三面挂
    《秋招日记》阿里一面
    秋招日记<->PDD一面挂
    十大排序
    第 254 场周赛 数组元素的最小非零乘积
    找不到boost/bind.hpp
    如何在Google浏览器中批量下载网页上的图片
  • 原文地址:https://www.cnblogs.com/fengmanlou/p/4533682.html
Copyright © 2020-2023  润新知