您的位置:首页 > 编程语言 > Java开发

java基础知识-static关键字

2016-09-05 13:59 363 查看
java中关键字static,一般用来修饰类内部成员,比如修饰成员变量我们称之为静态成员,修饰的成员方法我们称之为静态方法,他们属于类而不是类的实例

它们是随着类的加载(而不是随着对象的产生)而产生,以至于可以用类名+静态成员名(或静态方法名)直接获得。被static修饰的成员变量和成员方法是独立于该类的,它不依赖于某个特定的实例变量,也就是说它被该类的所有实例共享。所有实例的引用都指向同一个地方,任何一个实例对其的修改都会导致其他实例的变化。

static修饰的静态变量和静态方法和静态代码块介绍

ClassName.propertyName

ClassName.methodName(……)

static修饰的代码块表示静态代码块,当JVM装载类的时候,就会执行这块代码。

1static变量

static修饰的变量我们称之为静态变量,没有用static修饰的变量称之为实例变量,他们两者的区别是:

 静态变量是随着类加载时被完成初始化的,它在内存中仅有一个,且JVM也只会为它分配一次内存,同时类所有的实例都共享静态变量,可以直接通过类名来访问它。

 但是实例变量则不同,它是伴随着实例的,每创建一个实例就会产生一个实例变量。

 所以我们一般在这两种情况下使用静态变量:对象之间共享数据、访问方便。

2static方法

static修饰的方法我们称之为静态方法,我们通过类名对其进行直接调用。由于在类加载的时候就存在了,它不依赖于任何实例,所以static方法必须实现,也就是说他不能是抽象方法abstract。

 static方法是类中的一种特殊方法,我们只有在真正需要他们的时候才会将方法声明为static。如Math类的所有方法都是静态static的。

3static代码块

被static修饰的代码块,我们称之为静态代码块,静态代码块会随着类的加载一块执行,而且他可以随意放,可以存在于该了的任何地方。

static的局限:

由于static修饰的方法属于整个类,static方法内只能调用static变量和其他static方法,不能使用this,super等关键字。

static变量在定义时必须要进行初始化,且初始化时间要早于非静态变量。

静态方法效率上比实例方法效率高,静态方法的缺点是不自动进行销毁,而实例方法可以自动销毁。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: