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开发人员麻烦告诉一下,在此先谢过各位了

原文地址:https://www.cnblogs.com/tianyake/p/2405958.html