final关键字:
1、final修饰的类不可以被继承;final修饰的方法不可以被重写;final修饰的变量不可以被修改;
好处:1、为方法上锁,当定义方法不想被子类修改时可以采取此办法;
2、提高执行效率,编译器加载内嵌机制;
static关键字:
1、static方法:
1、只能调用其他的static方法
2、只能使用static变量
3、不能以任何方式引用this或者super关键字
(因为静态方法在编译时,最先被加载,所以有他的优势 以及 一定的局限性)
static常常在应用开发中提供一些实用工具类
static 静态也就是全局的意思,其不与具体对象相关直接由类名直接调用
一般定义static方法时,都用private修饰,其他类不可以修改和直接实用;
static变量
按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。两者的区别是:对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。
static方法
静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法 (就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法。因为实例成员与特定的对关联!这个需要去理解,想明白其中的道理,不是记忆!!!
因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。
当final和static同时使用时,相当于全局常量;