一、static
1.被static修饰的属性:
该属性可以被另一个类直接调用(当然也受访问权限的影响),而不用初始化该类,static属性只能是class 的成员,
不能在方法中用static修饰所定义的属性 。
2.被static修饰的方法:
该方法中不能存在非static修饰的属性和非static的方法,原因浅解释就是 避免出现未被初始化的对象或属性,相反,
非static修饰的方法,是可以调用有static修饰的属性或static修饰的方法的, 有一个比较特殊的static方法,就是static块,
static{ }; 该方法会在程序执行是最先调用。
3.被static修饰的内部类(注:主类不能被static修饰):
静态内部类是指在一个类的内部,又定义了一个用static修饰的类。可以用C中的结构体内嵌结构体来理解。首先,用内
部类是因为内部类与所在外部类有一定的关系,往往只有该外部类调用此内部类。所以没有必要专门用一个Java文件存放
这个类;
4.继承有static修饰的方法和属性的类:
static修饰的方法是不能被重写的,但属性可以被修改,如果两个都存在静态块,会先调用父类,再到子类的静态块。
5.简单的static在内存位置理解:
01.栈 02.堆 03.全局区
static就在 全局区(静态区)(static)全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初
始化的全局变量和未初始化的静态变量在相邻的另一块区域,被static修饰的,拥有固定内存,调用效率高,但是不会自动回收。
二、final
变量。你可能出于两种理解而需要阻止改变:设计或效率。
final类不能被继承,没有子类,
final类中的方法默认是final的。
final方法不能被子类的方法覆盖,但可以被继承。
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
final不能用于修饰构造方法。
注意:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的
更詳細的請看:http://lavasoft.blog.51cto.com/62575/18771/