代码如下:
/**
*
*/
package com.M.controller.test;
/**
* @author online zuozuo 于2017年2月20日下午12:43:56编辑
*
* @use 本类用于讲解static的一些特性
* @version 1.0
* @about static成员在类的任何对象创建之前被创建,因此它能在对象创建之前被访问,
* 最常见的例子是类的main方法声明为static的变量称为静态变量或类变量。
* 可以直接通过类名引用静态变量,也可以通过实例名来引用静态变量,
* 但最好采用前者,因为后者容易混淆静态变量和一般变量。静态变量是跟类相关联的,
* 类的所有实例共同拥有一个静态变量。静态方法可以直接调用静态方法,访问静态变量,
* 但是不能直接访问实例变量和实例方法。静态方法中不能使用this关键字,
* 因为静态方法不属于任何一个实例。静态方法不能被子类的静态方法覆盖。
*
*/
public class StaticAbout {
/**
* 本类的运行机制如下
* 1.当StaticAbout类被装载,所有的static成员被运行,最先执行类变量,a=3,b=0
* 2.然后程序继续运行static块,b被赋值
* 3.static块运行完毕,程序接着运行main方法,main去调用method方法
* 4.执行method方法,打印输出
*/
static int a = 2;
/**
* 解读b:因为b是static成员,当他创建一个引用但是没有赋值时会默认赋值0
*/
static int b;
static void method(int x) {
System.out.println("x = " + x);
System.out.println("a = " + a);
System.out.println("b = " + b);
}
/**
* 创建一个static块
*/
static {
System.out.println("先执行这里,static块被初始化");
b = a * 10;
}
public static void main(String args[]) {
method(2017);
}
/**
* 非静态的内部类
* 1.需要持有对外部类的引用
* 2.能访问外部类的全部成员
* 3.不能脱离外部类实体被创建
*/
class C {}
/**
* 静态内部类
* 1.不需要持有对外部类的引用
* 2.只能访问外部类的静态成员
*/
static class StaticClass {}
}