今天写了一篇介绍简单工厂模式的博客,里面用到了一个static修饰符。在以前的android开发中也经常用到static修饰符,说明static在java 中还是挺重要的。
static的翻译名字叫静态修饰符。所谓静态就是程序在运行中,static定义的内存不会随着程序的运行被回收和销毁,只要该程序销毁的时候,该内存才会被回收。因此在程序运行的任何时刻,我们都可以在内存中找到该对象。
static 定义的对象还经常和public配合使用,这样就算是在不同的包中,我们也可以不创建对象的实例就能获取对象。
就向在上一篇我的工厂类中,我们调用工厂类里的static方法,根本不需要 new 一个工厂类就能实现。
还有一些项目的配置等,我们在程序创建后,就不需要再进行改变。这时我们就可以将这些变量设置为static变量,在其他的任何类中,我们都可以获取到该静态变量。
熟悉C语言的同学可能知道C语言有全局变量,作用的范围是整个程序,只有程序销毁的时候,该对象才会被销毁,所以,在这里,我们就可以理解为static定义的对象就是全局对象。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。
当然,声明为static的方法有以下几条限制:
它们仅能调用其他的static 方法。
它们只能访问static数据。
还有一点值得我们注意的就是,如果一个static修饰的函数要调用该类的其他变量,那么该类的其他变量也必须是static修饰的。