静态属性
我们在Student类里面输入
两个变量
private static int age; //静态的变量
private double score; //非静态变量
有static 的为静态 没有为非静态
我们调用变量通常是new一个Student
public static void main(String[] args) {
Student s1 new Student();
s1.run();
}
我们也可以用类来调用
public static void main(String[] args) {
Student s1 new Student();
System.out.println(Student.age);
}
这样也可以调用 //类变量
但是当我们调用score 的时候就报错了
他会说没有static 所以会报错
静态方法
我们在Student类里面写上
public void run(){
}
public static void go(){
}
两个方法
我们要是想调用run方法
就会发现调用不了
我们必须new一个Student才可以调用
但是go方法却是可以直接调用
因为静态go方法在这个类里面
run方法也可以直接访问go方法, 因为go方法是跟类一起加载出来的
非静态可以调用静态方法里面的东西,静态只能调用静态方法,不能调用非静态方法
代码块
静态 代码块,我们可以用来加载一些初始化的东西
匿名代码块程序在执行的时候并不能主动调用他们,匿名代码块是在创建对象的时候就创建了,而且在构造器之前
静态代码块是在类一加载就直接执行,永久只执行一次
运行一下就会发现
第一个先运行的是静态代码块,然后再是匿名代码块,接着再是构造器的
第二次,则是匿名代码块,然后再是构造器,静态代码块就不在执行了
static 只执行一次
匿名代码块是在对象创建的时候才创建
匿名代码块用来赋一些初始值,因为他在我们的对象是同时参生的,而且他在构造方法前
import
我们创建一个main方法
输出一下Math.random()
public class Test {
public static void main(String[] args) {
System.out.println(Math.random());
}
}
每次输出一下,都是一个随机数
但是有时候我们不想写Math。 想每次写random的时候能不Math给省略掉
我们在类上方输入import static java.lang.Math.random //静态导入包
这样下面我们就直接写radom就可以了
import static java.lang.Math.random; //静态导入包
public class Test {
public static void main(String[] args) {
System.out.println(random());
}
}
注意
通过final修饰的类,无法被继承
比如Person这个类被final 给修饰了
public final class Person {
}
然后我们到Student类里面
继承一下Person ,就会发现无法继承报错了