static
属性和方法
//static
public class Student {
private static int age;//静态变量,,可以用类名访问
private double score;//非静态变量
public void run(){
}
public static void go(){
}
public static void main(String[] args) {
Student s1 = new Student();
System.out.println(Student.age);//Student.age --类变量
//System.out.println(Student.score);报错,非静态变量,无法用类变量直接得到
System.out.println(s1.age);
System.out.println(s1.score);
Student.go();//也可以直接go(); 静态方法 跟类一起加载
//run();Student.run();不可以,必须使用对象,如s1.run();
}
}
代码块
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();
}
/*输出:
静态代码块//和类一起加载,只执行一次(最先执行)
匿名代码块//对象创建时加载,可以赋一些初始值(在构造器之前)
构造方法//创建对象时加载
===========
匿名代码块
构造方法
*/
}
静态导入包
//静态导入包
import static java.lang.Math.random;//不用Math.random(); 直接用random;
import static java.lang.Math.PI;//在后面可以直接使用PI
public class Test {
public static void main(String[] args) {
System.out.println(random());//随机数
System.out.println(PI);
}
}
另外
- 被final修饰的类不能被继承,即没有子类(断子绝孙)