final关键字+静态(static)
●final关键字
-final关键字可以修饰成员变量,也可以修饰局部变量
-final关键字可以修饰在方法上
-final关键字可以修饰在类上
final修饰在变量上:
final修饰的变量只能被赋值一次,不能修改
final修饰在成员变量上,必须直接给初值
final修饰在局部变量是,可以先声明后给初值
final修饰在方法上:
这个方法不能被重写
final修饰在类上:
这个类就不能被继承
String类就是final类
●静态(static)
-static关键字可以修饰成员变量,不能修饰局部变量
-static关键字可以修饰方法
-static关键字可以修饰一段代码,静态代码块
-静态的属于类,不属于对象;非静态的属于对象,不属于类
static修饰成员变量:
在方法区开辟空间,就占一份内存,任何方法都可以修改这个静态变量
静态变量做一些共用或公用的计数(慎用),不安全
一般情况下用static和final共同修饰成员变量
static修饰在方法:
在方法区中开辟空间
静态方法和非静态方法在方法区中的存储是没有区别的
静态方法可以被重载
静态方法可以直接通过类名来调用
(频繁使用且不需要修改数据的方法设置为static)
在静态方法中不能使用this,this属于对象,而不属于类
静态的属于类,而不属于对象
static修饰代码块:static{}
静态代码块针对的是类,对类进行初始化
静态代码块随着类加载而加载到静态区,在类创建对象或执行方法之前执行,只执行一次
先执行静态代码块->类代码块->构造函数块
总结:
静态的方法只能访问静态的变量和静态的方法
非静态的方法可以访问静态变量和静态方法也可以访问非静态的变量和方法
静态的方法既可以用对象diaoy(不建议),也可以用类名调用(建议)
静态+常量 static final同时修饰
一般都是公有的静态的final变量
public static final int FILE_BLOCK_SIZE=4*1024*1024
公有的静态的final修饰的的量名字都是大写的,单词间用下划线分隔
一般出现在这样的类中
public class SysConstant{
public static final int FILE_BLOCK_SIZE=4*1024*1024;
...
//整个项目中所有用到的固定的常量,且值不需要改变的
//都可以放在此类中
}
直接用SysConstant.FILE_BLOCK_SIZE来取出值即可