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

Java-static

2015-07-06 15:20 369 查看
Java-static

一 static

static是一个修饰符,只能修饰成员变量和方法

除了对象调用的方式,还多了一种调用方式

即可以使用 类名.静态成员 来调用,简称为类变量,

2,static在数据区:类的方法和静态方法

3,static特点:

随着类的加载而加载,随着类的消失而消失

生命周期最长

优先于对象存在,静态变量在对象不存在的时候也存在

被所有对象所共享

直接被类名调用

4,使用的原因

虽然可以通过建立类的对象来使用类的方法,对类进行操作,

但是如果出现了:

1,定义了类的对象,却没有使用类的非静态变量

2,类没有封装静态变量

这两种情况的话。就可以考虑将类中的方法都定义为static,使得可以

直接通过类名.静态方法名来调用方法

将方法都静态后,可以方便与使用,但是该类还是可以被其他的程序建立变量

为了更加严谨,强制不能建立对象,可以通过将构造函数私有化来完成

二 实例变量(非静态变量)和静态变量(类变量)的区别

1,存放位置

类变量随着类的加载而存在于数据区中

非静态变量随着对象的建立而存在于堆内存中

2,生命周期

类变量生命周期最长,随着类的消失而消失

非静态变量生命周期随着对象的消失而消失

三 什么时候使用静态

什么时候定义静态变量:

当对象中出现共享数据时,该数据被静态修饰

对象中的特有数据定义成非静态存在堆内存

什么时候定义静态函数:

当函数内部没有访问到非静态成员的时候,可以定义为静态函数

非静态变量定义在对象中,当不需要使用非静态变量的时候,

就不需要对象去调用,所以可以定义为静态函数,用类名直接调用

注意事项

1,静态方法只能访问静态成员

非静态方法可以访问静态和非静态

2,静态方法不可以定义this,super关键字

因为静态优先于对象存在,所以静态方法不可以有this

3,主函数静态

优点:

对对象的共享数据进行单独空间存储,节省空间,没有必要每个对象都春一份

可以被类名调用

缺点:

生命周期过长

访问出现局限性,(静态只能访问静态)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: