java学习日志4
fianl和static修饰字的相关思考
时间:2020.5.8
一.final修饰
1.final修饰的变量
常量:由final修饰的变量我们叫做常量。
常量必须赋值一次,可以是在定义的时候直接赋值,也可以是在构造器中,后面无法被赋值或者修改
接口中的成员属性都是常量
对应代码理解
//第一种
```
fianl int a;
构造方法(){
a=10;
}
```
``
//第二种
final int a=10;
``
两者不可同时存在
2.final修饰的类
final修饰的类不许被继承 那么很明显 接口不能用final修饰,不然没有类可以实现它,失去意义了
同理抽象类也不能被final修饰
3.final修饰的方法
(插一句学习语言,就是要理解背后的思想和思维方式,final看得出来就是不想被修改的)
所以fianl修饰过的方法也不能被重写 所以第2点和第三点呼应起来
二.static修饰
1.static修饰的变量叫做静态变量
它属于这个类而不是这个对象
也就是说这个类只有一份这样静态变量,也就是说所有这个类的对象共享这个变量
我们讲内存模型的时候,我们讲类里面的普通方法也只有一份,在方法区。
静态变量也在方法区,也只有一份。
2.static修饰的方法我们叫做静态方法
使用--可以直接通过类名.方法名来使用 抽象类和接口也支持
static修饰的变量叫全局变量 只有一份(思想是与静态变量一致的)
--- 静态方法不能访问非静态成员变量
3.static修饰的代码块,静态代码块
静态代码块在类第一次被载入时执行
```
对应代码
public class Anmial{
static {
System.out.println("我是静态代码块");
}
Animal(){
System.out.println("构造方法");
}
public static void main(String[] args) {
Animal firstload =new Animal();//类第一次载入
Animal secendload=new Animal();//类第二次被载入
}
}
输出结果
我是静态代码块---只是在类第一次被载入时执行,且顺序在构造方法之前(也在普通代码块之前)
构造方法
构造方法
三 final 和static 共同修饰的常量叫全局常量
全局常量必须定义的时候就要赋值初始化
对应代码
class A{
final static int b=10;
}