java static关键字总结 简单易懂版
(1)修饰变量
总结
(1) 注释掉的代码为不能运行的
(2) 可以直接调用静态变量,不需要建立对象.变量
package com.heima.test;
public class TestStatic01 {
private static int a = 3;//类成员 静态成员 静态变量
private int b = 3;
public static void main(String[] args) {
System.out.println(a);
System.out.println(TestStatic01.a);
System.out.println(new TestStatic01().a);
//System.out.println(b);
//System.out.println(TestStatic01.b);
System.out.println(new TestStatic01().b);
}
}
(2)修饰方法
总结
(1) 静态方法可以被直接调用
(2) 非静态方法可以直接调用非静态
(3) 静态方法不能直接调用非静态方法
代码只是说明一下,执行会死循环
package com.heima.test;
//不要执行,会死循环
public class TestStatic {
public void run(){
go();
to();
}
public void run2(){
go();
to();
run();
}
public static void go(){
}
public static void to(){
go();
TestStatic.go();
//run();
new TestStatic().run();
}
public static void main(String[] args) {
//run();
go(); //其实跟下面一样
TestStatic.go();//直接引用
new TestStatic().run();//对象引用
}
}
(3)静态代码块
总结
(1) 执行顺序:静态>匿名>构造方法>main
(2) 静态代码块只执行一次
package com.heima.test;
public class TestStatic02 {
/**
*静态代码块
* 最先执行
* 只执行一次
*/
static {
System.out.println("静态代码块");
}
/**
* 匿名代码块
* 用来赋初值
*/
{
System.out.println("匿名代码块");
}
//构造方法
public TestStatic02(){
System.out.println("构造方法");
}
public static void main(String[] args) {
new TestStatic02();
System.out.println("main方法");
System.out.println("------------");
new TestStatic02();
}
}
(4)静态导入包
package com.heima.test;
//静态导入包
import static java.lang.Math.random;
import static java.lang.Math.PI;
public class TestStatic03 {
public static void main(String[] args) {
System.out.println(Math.random());
System.out.println(Math.PI);
System.out.println(random());
System.out.println(PI);
}
}