1.static含义
static顾名思义字面意思为静态的,我们之前所学的类中的属性和方法都是对象所拥有的,通过对象去调用属性和方法,每个对象的属性和方法都有所不同,这就造就了对于不同对象而属性和方法相同的时候,会出现繁琐的情况,为此,我们通过建立static静态属性和方法的方式来解决此问题。
2.从内存的角度来探讨static
从内存的角度来讲, 每个对象都会有属于自己的一片空间,但static修饰的是大家公用的,不属于任何一个对象,这块空间是独立的,这块空间在方法区中。
从代码角度来讲,所有属于对象的属性初始化过程是在对象被创建之后,但static修饰的属性和方法由于不属于对象,因此初始化的过程在main函数执行之前就完成了。
3.静态块
静态块是在static关键字后面加一个大括号,静态块的目的是做一些初始化过程,在main函数执行之前就已经执行了。
4.静态方法和属性
静态属性和方法的调用是由类名+属性或方法来完成的,因为用static修饰的属性和方法是类共有的,不是对象自己的,但对象也可以调用属性和方法,但一般不建议。
在非静态方法中,可以调用静态属性和方法,而在静态方法中,不能调用非静态属性和方法。
下面是一段关于静态属性和方法的代码:
package pack0804;
/**
* @author
* @description:static关键字
* @date 2021/8/4 16:40
* @verson 1.0
*/
public class Demo6 {
private static String name;//声明静态属性
public static String getName() {
return name;
}
public static void setName(String name) {
Demo6.name = name;
}
/**
*@description:声明静态方法
*@Date:2021/8/4 16:42
*/
public static void getInformation(){
System.out.println("这个人的姓名是:"+name);
}
public static void main(String[] args) {
//创建姓名
Demo6.setName("张无忌");
//调用方法
Demo6.getInformation();
}
}
5.final关键字
用final修饰的属性是常量,无法进行修改,且属性需要进行大写,用final修饰的类不能被继承。