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