1.static属性,方法
类内属性或方法用static修饰,表示该属性或方法属于类,不依赖于实例对象,所以不需要用对象调用,而是直接用类名调用。
static方法只能调用其他static方法,而普通方法可以调用其他的普通方法和static方法。
2.静态代码块
class Animal{
{
//1.匿名代码块 可用于给属性赋初值
}
static{
//2.静态代码块
}
public Animal(){
//3.构造方法
}
public static void main(String[] agrs){
Animal a = new Animal();
Animal a2 = new Animal();
}
}
如上图的代码,当new一个新对象a时,执行顺序为2-->1-->3,
当继续new一个新对象时,执行顺序为1-->3,
这表示静态代码块只在第一次new这个类的对象时执行。
3.静态导入包
import static java.lang.Math.random;
import static java.lang.Math.PI;
同文件的程序就可以直接调用random()了,而不用写Math.random()。PI也是同理,直接使用。
4.final
通过final修饰的类不能被继承,没有子类。
public final class Animal{
}
public class Rabbit extends Animal{ //会报错
final修饰的成员变量必须在所在的类的对象创建之前被初始化,且一旦初始化就不能被修改
下列代码为final成员变量初始化的三种方式:
public class Animal{
final int ear = 2;
final int leg;
{
leg = 4;
}
final int eyes;
public Animal(){
eyes = 2;
}
}
final修饰的局部变量必须在使用前赋值,且不能再修改。
public void func(){
final int number = 8;
}
当fina修饰基本类型的变量,则变量一旦被赋值,就不能修改,因为final修饰的变量是自定义常量
当final修饰的引用类型的变量,则该变量的值不能改变(也就是该变量不能指向别的对象,存放的地址不能改),但是指向的对象的内容可以被修改。
final int a = 10; //a不能被修改
final Animal r = new Animal();// r的值不能修改,但r指向的对象的内容可以修改
r.ear = 5;//修改对象的属性
当final修饰成员方法,该方法不能被重写,但是可以被继承
final 总结
Reference:
java final 关键字_小鸡费斯特的博客-CSDN博客