Java基础知识——static和final

一、static

1. static修饰变量:

static修饰的变量属于静态变量,随着类加载直接分配内存,与实例对象无关,所有类共用静态变量(需要考虑作用域,private、public之类),由于共用内存区域的问题,所以在并发场景下直接使用静态变量会有安全问题,正确打开方式是:对修改静态变量的函数加锁;

2. static修饰函数:

static修饰的函数属于整个类,在类加载的时候就存在且可以被调用;除此之外,static修饰的函数不可以用abstract修饰,必须实现;

3. static修饰代码块

静态代码块在类构造函数之前就被执行,具体为:
父类静态代码块——>子类静态代码块——>父类非静态代码块——>父类构造方法——>子类非静态代码块——>子类构造方法

二、final

1. final修饰变量

修饰基本数据类型(short\int\long\byte\double\float\char\boolean)时,表示这个变量值不可变;
修饰引用数据类型时,表示这个变量引用不可变,但引用的对象具体内容是可以改变的(比如对象的某个属性值是可变的)

2. final修饰方法

表示此方法不可被继承重写,保证了方案安全性。

3. final修饰类

表示此类不可以被继承

4. final修饰形参

参数在函数内部不可被修改,主要用户保证数据安全性,避免无意中改动数据带来的问题。

你可能感兴趣的:(Android学习之路,android,static,final)