static:
1. 修饰变量,方法
表示静态方法,静态变量。
2. static修饰代码块
static{ }
此种形式为静态代码块,用于初始化同时被final static修饰的变量。(当然,更常用的方式其实是在变量处直接赋值)
静态代码块的内容会被直接在类加载时运行
package com.main; /** * Created by 63289 on 2017/3/19. */ public class HelloJava { static{ System.out.println("This line will be default initialized"); } public static void main(String[] args){ System.out.println("Hello World"); } }
运行结果如下:
This line will be default initialized
Hello World
3. static放在内部类前,形成静态内部类
本文最重要的一部分。
1. static不能修饰顶级类,仅能修饰内部类。
2. static内部类和普通内部类主要不同如下:
(1) 静态内部类不需要指向外部类的引用,非静态内部类需要持有指向外部类的引用。
(这个很好理解,就是非静态的普通类需要在外部类建一个它的对象才能调用,而静态内部类则需要通过类名.方法名这种方法调用。)
(2) 非静态内部类能够访问外部类的静态和非静态成员,静态内部类只能访问外部类的静态成员。
(3) 静态内部类能够声明普通成员变量和静态成员变量和方法,非静态内部类不能声明静态成员变量和方法。
其他如static变量用类名直接调用等不再详述。
final:
1. 未初始化的final成员变量可以且只可以在构造器里初始化一次。
2. 未初始化的final局部变量可以且只可以在所属代码块里初始化一次。
否则就会报错。