Java基础
关键字
final
修饰数据/变量
数据/变量不可变了。声明数据是常量,可以是编译时常量,也可以是在运行时被初始化后不能被改变的常量。
- 对于基本类型,final使数值不变。
- 对于引用类型,final使引用不变,也就不能引用其他对象,但是被引用的对象是可以改变的。
修饰方法
声明方法不能被子类重写。
private方法隐式地被指定为final,如果在子类中定义的方法和基类中的一个private方法签名相同,此时子类的方法不是重写基类方法,而是在子类中定义了一个新的方法。
修饰类
声明类不允许被继承。
static
static关键字的作用是方便在没有创建对象的情况下被调用。
被static关键字修饰的不需要创建对象取调用,直接根据类名就可以去访问。因为静态修饰即表示将这个成员/变量/方法称为类所属,而不是对象所属。
修饰类成员即类
普通类不允许声明为静态,只有内部类可以。
非静态内部类依赖于外部类的实例,也就说需要先创建外部类实例,才能用这个实例来创建非静态内部类。而静态内部类不需要。
静态内部类不能访问外部类的非静态的变量和方法。
修饰成员变量
被static修饰的成员被称为类成员/静态成员(相对于对象的属性和方法)。
- 静态变量:又称为类变量,被所有对象所共享,类所有的实例都共享静态变量,可以直接通过类名去访问,在内存中只有一个副本即只有一份,当且仅当在类初次加载时会被初始化。静态变量也称为类变量,说明这个变量是属于这个类的,而不是属于某对象。
- 非静态变量:是对象所拥有的,在创建对象时被初始化,存在多个副本,每个对象拥有的副本互不影响。非静态变量也称为实例变量,说明这个变量是属于某对象。每创建一个实例就会产生一个实例变量,它与该实例同生共死。
public class A{
private int x;//非静态变量,实例变量
private static int y;//静态变量,类变量
public static void main(String[] args){
int x = A.x;//非静态变量x不能在静态块里被引用
A a = new A();//实例化一个对象
int x = a.