目录
5.被final修饰的类没有子类(final是断子绝孙的修饰符)
1.属性
静态的都是属于类的,如果能使用类去调用这个变量说明该变量是静态的。
2.方法
static随类一起加载,非static随实例一起加载。
3.代码块
测试以下三块内容的加载在java中的加载顺序:
package com.oop.demo07;
public class Person {
//代码块(匿名代码块)
{
System.out.println("匿名代码块");
}
//静态代码块
static {
System.out.println("静态代码块");
}
//构造器
public Person() {
System.out.println("构造方法");
}
public static void main(String[] args) {
Person person1 = new Person();
}
}
结果显示:静态代码块最先执行,然后是匿名代码块,最后才是构造方法。
再创建一个对象person2,看看执行情况:
package com.oop.demo07;
public class Person {
//代码块(匿名代码块)
{
System.out.println("匿名代码块");
}
//静态代码块
static {
System.out.println("静态代码块");
}
//构造器
public Person() {
System.out.println("构造方法");
}
public static void main(String[] args) {
Person person1 = new Person();
System.out.println("==================");
Person person2 = new Person();
}
}
结果显示:静态代码块只在第一次实例化的时候执行一次,而匿名代码块和构造方法每次都要执行。
匿名代码块可以用来赋初始值。
4.导入包
比如,想用Math类下面的方法random(),但是不想每次都通过Math.random()来调用。
package com.oop.demo07;
public class Test {
public static void main(String[] args) {
System.out.println(Math.random());
}
}
可以通过一次性导入包来解决:
import static java.lang.Math.random;
package com.oop.demo07;
import static java.lang.Math.random;
public class Test {
public static void main(String[] args) {
System.out.println(random()); //直接 random()调用
}
}