Java中final、static

来源:互联网 发布:php云标签 编辑:程序博客网 时间:2024/06/01 10:04

题目描述:简单介绍Java中final和static

1)final

    1.final可以修饰类、方法、变量

    2.final修饰的类不能被继承

    3.final修饰的方法可以被重载,但是不能被重写

    4.final修饰的变量, a)当final修饰的成员变量为基本数据类型时,在赋值后无法改变

                                    b)当final修饰的成员变量为引用类型变量时,在赋值后其指向地址无法改变,但是对象内容可以进行改变。

    5.final修饰的成员变量在赋值时的三种方式: a)在声明中直接赋值

                                                                         b)在构造器中赋值

                                                                         c)在初始化代码块中进行赋值

    6.final修饰方法中的参数,称为最终参数。

    7.static final和final之间的区别:前者代表对于一个类恒定不变的属性,后者代表对于一个类来说恒定不变的属性,但是对于一个类不同对象之间还是可以变换的。


2)实例变量、局部变量、类变量、final变量

    1.实例变量:定义在类中的成员变量,可以不进行初始化,java会自动进行初始化,如果是引用类型默认初始化为null,如果为基本类型默认初始化为0,如int型默认为0;

    2.局部变量:定义在方法中的变量,必须进行初始化,否则编译不通过。因为局部变量运行时被分配到栈中,量大,生命周期短,如果虚拟机给每一个局部变量都初始化以一下,是一笔很大的开销;

    3.类变量:被static修饰的变量。静态变量随着类的加载而加载,是属于整个类的,能够被类、成员函数、静态成员函数调用。

    4.final变量: a)当final修饰的成员变量为基本数据类型时,在赋值后无法改变

                           b)当final修饰的成员变量为引用类型变量时,在赋值后其指向地址无法改变,但是对象内容可以进行改变。


3)static

    1.static修饰的变量称为静态变量:静态变量再内存中只有一个拷贝,一般放置在代码块中,在加载类的过程中完成静态变量的内存分配,可以通过类访问,也可以通过对象访问;能够在对象之间共享变量

    2.static修饰的方法称为静态方法: a)静态方法可以通过类名直接访问,也可以通过对象调用;

                                                             b)静态方法不能使用this和super关键字,因为静态方法是属于整个类,而this是属于具体的实例对象;

                                                             c)只能访问静态成员变量。

    3.static修饰的代码块叫做静态代码块:在JVM加载类时,会先执行静态代码块,所以构建子类对象时,会先执行静态代码块。

0 0