关键字之static
概述:
修饰方法和成员变量,一旦修饰被修饰,就属类所有,可以通过类直接调用。
静态代码块:主要功能是做一些初始化工作。
代码块可以给变量赋初始值,但是千万不要把变量定义在代码块中。
代码块不能接受参数,所以它初始化的应当是公共的相同的信息,每个类或每个对象都是一样的信息。
静态成员(field、方法、代码块)不能访问非静态的成员,因为在他们运行的时候 非静态成员还不存在。
package com.hoonee.javase.keyword;
/**
* static关键字演示
*
* @author Hoonee
* @mail hoonee@163.com
*/
public class StaticDemo {
public static void main(String[] args) {
// 静态成员变量 测试
System.out.println(StaticObject.author);
System.out.println("----------------------");
// 静态方法 测试
StaticObject.staticTest();
System.out.println("----------------------");
new StaticObject().noStatictest();
System.out.println("----------------------");
/*
* 执行上面方法会获得很多信息: 1.有static修饰的代码块,在类被使用的时候,首先执行,并且只执行一次
* 2.没有static修饰的代码块,在类实例化的时候会被调用,并且每次实例化都会被调用一次 3.代码块的执行总是先于构造方法
*/
}
}
class StaticObject {
static {
System.out.println("初始化代码块");
}
{
System.out.println("普通代码块");
}
// 静态成员变量 属于类
public static String author = "hoonee";
public StaticObject() {
System.out.println("构造函数");
}
public static void staticTest() {
System.out.println("静态方法");
}
public void noStatictest() {
System.out.println("非静态方法");
}
}