Java中关键字有50个居多,涉及不同类型,总结出常用的关键字特点,打好坚实的基础,盖好大楼;
一、final : 无法修改
final数据
编译时常量,只能使用基本数据类型,变量定义时已经初始化;
运行时常量,使用基本数据类型,数据内容不可变,使用引用数据类型,引用不可变,引用对象可以改变;final方法
方法锁定,不能更改,父类中的final方法不能被子类覆盖;
效率问题,具体如何提升效率,仍在学习中;final类
final类不能被继承,其成员变量可为final,也可不为,成员方法默认为final类型,不能修改;final参数
被final修饰的参数,在使用过程中不能被修改;
匿名内部类所在方法的形参,需要在内部类中使用,需要定义为final类型;
二、static : 静态
- static变量
被static修饰的为静态变量,在类加载时实现初始化;无static修饰的为实例变量,依赖于实例的创建; - static方法和代码块
static方法和代码块在类加载时初始化,且仅可以调用static变量和static方法;不能使用this和super关键字,因为其依赖于具体实例;
final与static双剑合璧,产生蛮荒之力,妙不可言。
package javaBasic;
import java.util.ArrayList;
public class FinalTest {
private static String stuHome = null;
private final String stuSchool = null;
private static final String stuName = "XiaoMing";
private static final int stuAge = 10;
private static final Hobby stuHobby = new Hobby("Ball");
private static final ArrayList<String> stuClass = new ArrayList<String>();
public void changeInfo(){
stuHome = "China"; //正确,可以修改
stuSchool = "Xidian"; //错误,即使初始化为null
stuName = "XiaoHuang"; //错误,全局常量不能修改
stuAge = 22; //错误,全局常量不能修改
stuHobby.setHobby("Music"); //正确,引用不变,引用对象可变
stuClass.add("Math"); //正确,容器不变,容器内对象可变
}
}
class Hobby{
private String hobby = null;
public Hobby(String hobby){
this.hobby = hobby;
}
public void setHobby(String newHobby){
this.hobby = newHobby;
}
}