• Static的个人理解


    对于static相信大家对此并不会感觉到陌生吧,因为任何的程序都应该具有一个main大家还记得吧。Public static void main(String[] args)这样就定义了一个静态的main方法,但是在用的同时很少真正去研究它为什么要定义成static或者说这样的好处是什么,今天特定去翻看了一些书籍,也当做个总结希望对大家有帮助。
    传统的对象定义:

    class A {

    publicvoid write(String message){

    System.out.println(message);

    }

    }

    上面我们定义了一个类名称为A,那么普通的对象要使用必须通过下面的方式,只有通过new来产生对象,否则就不存在任何实质的对象,所以只有在产生对象才会被分配出来,函数才可以供其他调用

    A a1=new A();

    A a2=new A2();

    那么上面的这种创建其实就是跟对象建立一个关系,那么存储的状态应该是a1,a2分别创建二个对象空间,那么每个对象都有write这个方法,那么我们在调用的时候必须信赖于对象来进行相应的访问。

    static的函数方法是在创建之前就存在的,它脱离了对象本身,那么不管你创建多少个对象那么它的static方法或属性都只会有一个。

    class B{

    publicinti=8;

    publicstaticvoid write(){

    System.out.println(this.i);

    }

    }

    上面定义了一个B的类,在B中有一个公共的write方法,那么不管你创建多么个类而write方法只会有一个,那么如果要使用不需要再创建B这个类,只需要在其他的类中B.write()来调用,这跟普通的一个区别因为他不用对象的创建就存在在内存中而且调用的方法是直接用类名而不是对象名。

    你发现了?

    上面我特别留了一个错误,不信你自己运行一下,对于任何的static方法而言其实不能访问本类的普通对象,因为他们在创建的时候不是在同一个命名空间,所以你要使用i的话必须在write中创建B再调用这样就访问。

    总结:其实就像《JAVA编程思想》中说的那样static通常是被做为‘牧羊人'的角色,那么抽象的来理解就是在一个类中创建static方法那么这个方法的作用就是用来管理所有隶属这个型别的孵生的对象。

    大家如果有什么更好的理解可以发出来,不管怎样分享的目的主要是以学习为最终目的。


    楼主刚来北京无业状态,如果哪位前辈就职的公司需要相应的android开发人员麻烦告诉一下,在此先谢过各位了

  • 相关阅读:
    手把手教你用nodejs+SQL Server2012做增删改查
    js实现匀速运动及透明度动画
    SqlServer用sql对表名、字段做修改
    nodejs 使用fs实现多级联动
    关于此实现不是 Windows 平台 FIPS 验证的加密算法的一部分。
    访问快科技(驱动之家)某个新闻会自动跳转到web.techtoutiao.win
    在windows server上配置java jdk后,可能要些时间生效。
    .net webapi 收不到json 实体类参数,返回的json中带有k__BackingField
    空调 水槽 堵 用吹或吸都可以
    .net 4.0 程序遇到 停止工作 appcrash ,kernelbase.dll 等提示
  • 原文地址:https://www.cnblogs.com/tianyake/p/2405958.html
Copyright © 2020-2023  润新知