static关键字
static可以修饰变量,方法。
一般被static修饰后的变量或方法,在类创建的同时也被实现,即创建对象之前已经存在了静态的变量和方法。
static变量
public class Demo {
private static int i = 1; //静态的变量i
private String s = "WW"; //非静态的变量s
public static void main(String[] args) {
Demo d = new Demo();
//使用类调用静态变量
System.out.println(Demo.i); 1
//使用对象调用静态变量(一般不使用)
System.out.println(d.i); 1
//使用对象调用非静态变量
System.out.println(d.s); WW
}
}
static方法
public class Demo {
public static void main(String[] args) {
Demo d = new Demo();
//使用类调用静态变量
Demo.print(); 这是一个静态方法
//如果在当前类操作,可直接调用静态方法
print(); 这是一个静态方法
//使用对象调用非静态方法
d.print2(); 这是一个非静态方法
}
public static void print(){
System.out.println("这是一个静态方法");
}
public void print2(){
System.out.println("这是一个非静态方法");
}
}
static代码块
public class Demo {
//静态代码块是和类同时生成,先执行
//后执行匿名代码块,最后执行构造方法
{
System.out.println("这是一个匿名代码块");
}
static{
System.out.println("这是一个静态代码块");
}
public Demo(){
System.out.println("这是一个构造函数");
}
public static void main(String[] args) {
Demo demo1 = new Demo(); 这是一个静态代码块
这是一个匿名代码块
这是一个构造函数
//静态代码块和类同时实现,且只实现一次
Demo demo2 = new Demo(); 这是一个匿名代码块
这是一个构造函数
}
}
static包
import static java.lang.Math.random;
public class Demo {
public static void main(String[] args) {
System.out.println("不使用静态包:" + Math.random());
System.out.println("使用静态包:" + random());
}
}