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

java 中static final用法

2016-05-11 20:58 253 查看

final用法

1、final用在类上,表明当前类它不能被继承,没有子类。

2、final用在方法上,表明当前方法不能被override,不能被重写。

3、final用在变量上,表明当前变量是一个终态的变量,是一个常量,这个变量的值一但被赋值后就不能被改变了。

(一般final用作全局变量的时候和static连用 即final static)

对于final类型的成员变量的初始化方式:

1、声明变量时直接赋值

2、在构造方法中完成赋值,如果一个类有多个构造方法,就要保证在每个构造方法中都要完成对该final类型变量的初始化工作。

static用法

有时你希望定义一个类成员,使它的使用完全独立于该类的任何对象。通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。static 成员的最常见的例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static。

static 修饰变量

被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。

在加载类的时候,static变量在内存中申请,而非在实例类的时候申请内存。类的所有实例共享同一个static变量。

private是访问权限限定,static表示不要实例化就可以使用。 private static的变量表示该变量不能在其他类中通过类名来直接引用

静态变量与实例变量

对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类 的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。

对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。

静态变量的使用场合

在对象之间共享值时

不需要通过实例来访问变量,方便访问变量时

static修饰方法

静态方法可以直接通过类名调用,任何的实例也都可以调用

因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract

静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。

申明为静态方法的是 为了方便方法的调用,Java API中的Math类中所有的方法都是静态的,而一般类内部的static方法也是方便其它类对该方法的调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: