关键字static,final的使用

来源:互联网 发布:teamviewer mac版12.0 编辑:程序博客网 时间:2024/04/28 01:46
interface DescriptionI{public static final String s="接口中的成员变量s";}class A{public static int a=199;public int b=200;public void function(){System.out.println("类A的成员方法function");}public static void function1(){System.out.println("类A的静态方法function1");}public static void method(){//function();错误,静态方法不能调用 非静态方法//b=12;错误,静态方法不能调用 非静态变量function1();//正确,调用静态方法a=991;//正确,调用静态变量}}class StaticUseTest implements DescriptionI{private static String s="实现类的成员变量s";public static void main(String[] args){String s="局部变量s";System.out.println(s);System.out.println(DescriptionI.s);System.out.println("用类名A直接调用静态变量a:"+A.a);}}


静态的成员可以被类名直接调用。在局部,如果是被final修饰的变量(即常量),可以用static修饰,否则不能用static修饰局部变量。

接口中的成员变量默认被public static final 修饰
接口中的成员方法是抽象的,默认被public abstract 修饰

final可以修饰变量,方法,类。final修饰特点:

变量:被final修饰的变量不能被重新赋值,因为这个量其实是常量。

方法:被final修饰的方法不能被重写。

类:被final修饰的类不能被继承
 

被static修饰的成员变量(静态变量)和普通成员变量的区别:

1、所属不同:静态变量属于类,成员变量属于对象
2、内存存储位置不同:静态变量存储在方法区的静态区,成员变量存储在堆内存中
3、生命周期不同:静态变量随着类的加载而加载,随着类的消失而消失;成员变量随着对象的创建而存在,随着对象的消失而消失
4、调用方法不同:静态变量可以用类名直接调用,也可以用对象调用;成员变量只能用对象调用
5、静态变量可以被多个对象共享。成员变量是对象所独有的。
 
 静态成员优先于对象存在,是属于类的,所以也被称为类成员
 静态方法只能调用静态变量和静态方法,因为非静态的属于对象,静态的属于类,优先于对象存在,调用非静态成员时,有可能非静态的还没有被随着对象创建
 静态方法中没有this关键字,原因同样是this关键字是随着对象的创建而存在的。
0 0
原创粉丝点击