在学习Java的开始我们就接触到了static关键字了,main函数就是用static关键字来形容的,那么static到底有什么用?
在我们构建一个项目的过程中,总有那么几个属性在整个代码中不会进行改变,那么我们就可以使用stati关键字来修饰它,那么我们应该怎么来使用static呢?
static修饰变量
语法: static 修饰属性 变量;
static,静态的,可以用来修饰属性,方法,*代码块,*内部块。
static的内存地址有一个单独的地方,叫做静态域,那我们就可以解释为什么一个变量在不同的对象下赋值的时候,其他对象也会跟着改变,静态变量不用于实例变量,我们可以理解为在一个变量调用了static进行修改后,静态域中的静态变量就会被修改,当其他对象再去调用的时候就已经改变了,而且耶可以看出,为什么静态变量可以在全局使用。
静态变量和实例变量不同的是,在我们没有设立对象的时候我们就可以为我们的静态变量初始化内存空间,并且我们可以通过类来调用我们的静态变量,但是如果是实例变量的话,我们需要在建立对象以后我们在会给分配内存空间,所以说我们不能通过类来调用实例变量。
static修饰方法(类方法)
与变量一样,随着类的加载而加载,我们也可以在通过类来进行调用,类.类方法。
静态方法中只能调用此类中静态的属性和静态的方法,这一点是需要特别注意的,
但是非静态的方法却可以调用静态的方法和属性。至于为什么,我们可以从两个方法的生命周期来看,静态的方法会在类创建的时候就有了,但是非静态的还是回来对象声明的时候才会分配内存空间。
并且静态的方法里面是不能有this和super方法的,我们知道,this和super都是在对象中使用的,所以说在静态方法存在时对象还没存在,我们便不能在其中使用这两个关键字。