JAVA中的关键字static,final和const

来源:互联网 发布:m1136mfp扫描软件 编辑:程序博客网 时间:2024/05/22 13:39

一、static

1.static修饰变量

C的局部变量,全局变量(即外部变量)和静态变量

局部变量:在函数内定义的变量,采用动态存储方式。
全局变量:在函数外定义的变量,采用静态存储方式。
extern: 外部变量的作用域从定义点到文件结束。如果在定义点之前的函数(或其他源文件的函数)想引用该外部变量,则应该在应用之前用关键字extern对该变量作‘外部变量声明’。表示该变量是一个已经定义了的外部变量,就可以合法的调用该外部变量。
静态变量:静态变量的初值只在编译时赋予,且只初始化一次。生存期为整个源程序,作用域为本源文件或函数。采用静态存储方式。
静态全局变量:作用域为本源文件,生命周期是程序生命期。
静态全局变量的作用:1.不必担心与其他源文件使用相同变量名 2.不会被其他源文件修改  3.只能在本文件使用
静态局部变量:作用域为函数,生命周期是程序生命期。
注:使用了大量全局变量的程序维护起来很麻烦,尤其是有许多函数都各自访问一个全局变量的程序。所以引入了静态局部变量,但用全局变量也无妨。

JAVA的局部变量,全局变量和成员变量

全局变量:JAVA中不存在全局变量这个概念
局部变量:定义在方法中,需要自己初始化,不可以被访问控制符及static修饰,可定义成final型
成员变量:定义在类中,JAVA可帮你初始化,可以被访问控制符(public)及static修饰,可定义成final型
成员变量有两种:实例变量,类变量(静态变量)
实例变量(对象变量):没有static修饰
类变量(静态变量):由static修饰,被类的实例公用

2.static修饰函数


C的静态函数

静态函数:用static修饰的函数,只在本源文件可见
优点:1.不会被其他源文件所用  2.其他文件中可以起相同的函数名字

JAVA的成员方法

成员方法:包括静态方法,实例方法
类方法(静态方法):被一个类的所有实例公用
实例方法(对象方法):属于某个对象

注:1.static方法内部不能引用非static变量。
2.static方法不能被子类重写为非static方法。
3.父类的非static方法不能被子类重写为static方法。
4.static代码块可以用static {}来完成,在类被第一次装载时执行初始化,先于静态方法和其他方法的执行。

3.static修饰内部类


没有外部类对象时,也能够访问静态内部类。

静态内部类仅能访问外部类的静态成员和方法。


4.static修饰代码块


静态代码块与非静态代码块的不同:静态代码块只在第一次new的时候执行,而非静态代码块每一次new都要执行。

JVM加载类的时候执行顺序:静态代码块---非静态代码块---主方法


static的含义:1.静态存储方式  2.作用域仅限于本文件 3.不需要实例化就可以使用


二、final


1.final修饰变量

final成员变量表示常量,只能被赋值一次,赋值后值不再改变。final经常和static一起使用表示常量(即static final,不用实例化)。

2.final修饰方法

final方法表示不能被子类重写,但可以被继承,如果认为一个方法的功能足够完善,子类不需要改变的话,就声明为final。final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。

重写(覆盖):在子类中定义某方法与其父类有相同的名称,返回类型和参数(有继承关系)

重载:JAVA中一个类可以有多个同名方法,参数类型或个数等可以不同。(没有继承关系)

3.final修饰类

final类功能通常是完整的,它们不能被继承,没有子类,Java中有许多类是final的,譬如String, Interger以及其他包装类。


三、const

const是java中的预留关键字(java中预留关键字还有goto),现在没有作为关键字,以后的版本中可能扩展用,但现在常用于C,C++中。C中的const类似于final。


1 0