java static静态修饰符
java static
静态属性:
package com.yuanyu.Oop;
public class Student{
private static int age; //静态变量
private double score; //非静态变量
public static void main(String[] args) {
Student s1 = new Student();
System.out.println(age=10);
System.out.println(s1.age=11);
System.out.println(Student.age=12);
//System.out.println(Student.score=89); //编译报错
System.out.println(s1.score=90);
//System.out.println(score=91); //编译报错
}
}
若是static静态变量推荐使用类名调用变量,可以很清楚看出是个静态变量
静态变量对于这个类而言在内存中只有一个,可以被类中所有的实例共享,常用于多线程
静态方法:
package com.yuanyu.Oop;
public class Student{
public void run(){ //非静态方法
go(); //非静态方法可以直接访问类中的静态方法
System.out.println("run");
}
public static void go(){ //静态方法
System.out.println("go");
}
public static void main(String[] args) {
//run(); //编译报错 静态方法不能直接调用非静态方法
new Student().run();
Student.go();
go();
}
}
非静态方法可以直接访问类中的静态方法
代码块:
package com.yuanyu.Oop;
public class Student{
{
System.out.println("匿名代码块");
}
static {
System.out.println("静态代码块");
}
public Student() {
System.out.println("构造方法");
}
public static void main(String[] args) {
Student student1 = new Student();
System.out.println("================================");
Student student2 = new Student();
}
}
运行结果:

静态代码块最先执行且执行一次,其次是匿名代码块、构造方法
因此静态代码块和匿名代码块都可以用来赋初始值
静态导入包:
package com.yuanyu.Oop;
import static java.lang.Math.random;
public class Student{
public static void main(String[] args) {
System.out.println(Math.random()); //0.35021309558598646
System.out.println(random()); //0.07537262741719064
}
}
导入包中方法时加入static修饰,否则会报错


浙公网安备 33010602011771号