Static关键字详解
static 加在方法上叫 静态方法
static 加在属性上叫 静态属性
1.static
package com.oop.demo09;
//static
public class Student {
//一.静态属性
private static int age;// 加了static 是静态的变量 多线程!
private double score; //没有static 非静态的变量
//二.静态方法
public void run(){ //非静态方法
//下面main方法里面要调用这个方法必须 先new一个Student 在main方法里面写 new Student().run(); 才能调用
go();//非静态方法可以去调用静态方法里面的东西
}
public static void go(){ //静态方法
//下面main方法 可以直接Student.go(); 或者go(); 调用
//静态方法跟类一起加载。。。所以后面加载的非静态方法可以调用这里的东西
}
public static void main(String[] args) {
Student s1 = new Student();
System.out.println(Student.age);//静态属性 直接通过类Student.age调用
//若把上一行代码Student.age换成Student.score就会报错
//因为score是非静态的变量 没有加static 不能这样调用 程序会报错
System.out.println(s1.age);//通过对象s1调用age和score 前提:要new一个Student类
System.out.println(s1.score);
}
}
2.代码块扩展
package com.oop.demo09;
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 person1 = new Person();
System.out.println("============================");
Person person2 = new Person();
}
}
结果是:
静态代码块
匿名代码块
构造方法
============================
匿名代码块
构造方法
由此可见 程序首先执行静态代码块(且只执行一次)
然后执行 匿名代码块 然后构造方法
3.静态导入包及final修饰符
package com.oop.demo09;
//静态导入包~
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(Math.random());这个是生成一个随机数的意思 要是不导入包 正常要这么写 得多写Math
System.out.println(PI);
//通过final修饰的类 另一个类无法通过extends继承 final之后断子绝孙
}
}
标签:System,详解,static,Student,println,Static,out,public,Day57
From: https://www.cnblogs.com/baixiaofan/p/17985771