您好,欢迎访问一九零五行业门户网

java中static关键字的详细介绍

java中static关键字主要有两种作用:
第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关。
第二,实现某个方法或属性与类而不是对象关联在一起
简单来说,在java语言中,static主要有5中使用情况:成员变量、成员方法、代码块,内部类和静态导包。
基本用法:
static修饰成员变量:该成员变量属于类变量,可以通过 classname.attributename 直接引用,而不需要new出类的实例。
static修饰成员方法:该方法属于类的方法,可以通过 classname.methodname 直接引用,而不需要new出类的实例。
static修饰代码块:仅在类初始化的时候执行一次,且加载顺序是严格按照类中静态资源的定义顺序来加载的;静态代码块对于定义在它之后的静态变量,可以赋值,但是不能访问。;父类代码块->子类代码块。
static修饰内部类:static不能修饰普通类,只能修饰内部类,被static修饰的内部类的创建方式: new outerclass.innerclass()。
static导入包:语法“import static java.lang.math.*”,这样在类中就可以直接使用math类中的静态方法而不需要写类名,个人认为,在频繁使用某个类的时候比较方便,但是降低了可读性。并且不建议导入*
下面分别举例说明static的各种用法
static修饰成员变量和成员方法
几个结论:
/**  *  * created by ascend on 2017/6/9 13:51. */public class test {public static void main(string[] args) throws classnotfoundexception {         class.forname(net.liebao.test.a);     } }class a {static {         system.out.println(a.static initializer);     }public a() {         system.out.println(a.a);     } }
输出:
a.static initializer
结论一:静态资源属于类,但是独立于类,静态资源在类初始化的时候被加载(早于new),比如通过:class.forname(“xxx”)可以加载一个类的静态资源,但是没有new。
结论二:静态资源(静态成员变量,静态成员方法,下同)不能访问非静态资源,非静态资源是new时候才会产生,所以不能访问,反之,非静态资源则可以访问静态资源。
结论三:静态资源可以访问静态资源,但是需要注意的是,静态资源可以为定义在它之后的静态资源赋值,但是不能访问定义在它之后的静态资源
另外一个常见的用途是static实现单例模式
我们都知道,单例模式的特点是该类只能有一个实例,为了实现这一功能,必须隐藏类的构造函数,即把构造函数声明为private,并提供一个创建对象的方法,由于构造对象被声明为private,外界无法直接创建这个类型的对象,只能通过该类提供的方法来获取类的对象,要达到这样的目的只能把创建对象的方法声明为static,程序实例如下:
class singleton {private static singleton instance = new singleton();//私有化构造函数private singleton(){}public static singleton getinstance(){return instance;     } }
上面的单例模式是饿汉模式;
以上就是java中static关键字的详细介绍的详细内容。
其它类似信息

推荐信息