静态变量对于类,所有对象(实例)所共享,当直接使用类去调用得到说明这个变量是静态的。
package OOP.Demo07;
//static :
public class Student {
private static int age;//静态的变量 多线程
private double score;//非静态变量
public static void main(String[] args) {
Student student = new Student();
System.out.println(Student.age);
//System.out.println(Student.score);
System.out.println(student.age);
System.out.println(student.score);
}
}
我们直接用类名去调用它的静态变量age .Student.age
非静态方法可调用所有东西,静态方法可以调用静态方法。由类加载器所决定。
public class Student {
private static int age;//静态的变量
private double score;//非静态变量
public void run(){
}
public static void go(){
}
public static void main(String[] args) {
new Student().run();
Student.go();
go();
}
}
静态代码块
public class Person {
{
//代码块(匿名代码块)
//2
System.out.println("匿名代码块");
}
//1 只执行一次
static {
//静态代码块
System.out.println("静态代码块");
}
//3
public Person() {
System.out.println("构造方法");
}
public static void main(String[] args) {
Person person = new Person();
}
}
输出结果
package OOP.Demo07;
public class Person {
{
//代码块(匿名代码块)
System.out.println("匿名代码块");
}
static {
//静态代码块
System.out.println("静态代码块");
}
public Person() {
System.out.println("构造方法");
}
public static void main(String[] args) {
Person p1 = new Person();
System.out.println("===========");
Person p2 = new Person();
}
}
我们发现静态代码块没有随着Person p2=new Person();而再次输出出来,由此我们可以判断静态代码块仅能被执行一次。
静态导入包
//静态导入包
import static java.lang.Math.random;
import static java.lang.Math.PI;
public class Test {
public static void main(String[] args) {
System.out.println(random());
System.out.println(PI);
}
}
平常我们在使用random方法时在Java中必须要使用Math.random或者Math.PI来调用这两个方法。一旦使用静态导入包,则不需要使用Math.的前缀,这是Java的一个新特性。
一个类被final修饰则它无法被其他类所继承
final之后断子绝孙
如图所示
特别感谢:
附上视频地址
狂神yyds
https://www.bilibili.com/video/BV12J41137hu?p=30