- 说明
- 静态属于类;在其他类中使用时,采用类名.静态直接访问;当前类中使用可以省略类名
- 静态为所有实例共享
- 不需要实例化即可使用
- 主要应用
- 静态属性
- 静态方法
- 静态块
- 静态包
- []静态属性 vs 静态方法
-
package base.class2;
public class Static {
public static int age;
public int unit;
public static void run() {
System.out.println("static run");
}
public void walk() {
System.out.println("walk");
}
public static void main(String[] args) {
Static sta = new Static();
System.out.println(age);
System.out.println(Static.age);
System.out.println(sta.unit);
run();
Static.run();
sta.walk();
}
}
- []静态代码块
-
package base.class2;
public class Block {
static {
System.out.println("static block");
}
{
System.out.println("normal block");
}
public Block() {
System.out.println("constructor block");
}
public static void main(String[] args) {
Block block0 = new Block();
Block block1 = new Block();
}
}
- 执行结果:
- 1.先执行静态代码块
- 2.然后执行普通代码块/匿名代码块
- 3.最后执行构造函数
- 每次new一个对象时,都会执行普通代码块和构造函数,但静态代码块只执行一次
-
static block
normal block
constructor block
normal block
constructor block
- []静态包
- 传统方法
-
package base.class2;
public class Pack {
public static void main(String[] args) {
System.out.println(Math.random());
}
}
- 改进方法:导入静态包,可以直接使用
-
package base.class2;
import static java.lang.Math.random;
public class Pack {
public static void main(String[] args) {
System.out.println(random());
}
}