Edgar的java学习日志-Final与static的相关思考

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;
   
   }

四、关于生命周期和其他内存方面所涉及到的内容以后再补充

你可能感兴趣的:(Java基础)