目录
static
一.static关键字的特点
static是一个修饰符,用于修饰类的成员方法、类的成员变量。
- 静态变量: static关键字用来声明脱离对象的静态变量,无论有多少实例化对象,它的静态常量只有一份拷贝到常量池。静态变量又称类变量;局部变量不可声明成静态。
- 静态方法:static关键字声明的方法称为静态方法,静态方法只可调用静态变量。
- 随着类的加载而加载。
- 优先于对象的存在 脱离对象但没有完美脱离。
- 被类的所有对象共享。
- 可以直接被类名调用。
二.staic的优缺点
优点:
-
对对象的共享数据提供单独的储存,节省空间,没必要每一个对象都存一份
-
可以直接被类名调用,不用在堆内存创建对象
缺点 :
- 访问出现局部型 (静态方法只能调用静态方法和静态变量)
三.注意事项
静态方法只能访问静态成员
非静态方法既可以访问静态成员也可以非静态成员
原因是,静态方法脱离了对象,而变量依托于对象,所以当静态方法调用不了非静态成员。
方法中不可定义静态变量
当将一个变量声明成static时,它就脱离了对象,进入常量池,所以非静态方法不能声明静态成员
静态方法不可以定义this,super关键字
this代表对本类对象的引用,指向本类已经创建的对象;而super代表对父类对象的引用,指向父类对象
this
因为this代表的是调用这个方法的对象的引用,而静态方法是属于类的,不属于对象,静态方法成功加载后,对象还不一定存在。
super
静态优先于对象存在,所以方法被静态修饰之后方法先存在,而方法里面要用到super指向的父类对象,但是所需的父类引用对象晚于该方法出现,也就是super所指向的对象没有,当然就会出错。
static变量使用
当一个 属性 或 方法 被static声明时,在外部类可以直接通过 "类名.变量名" 即可调用
请动动读者大大的小手手 关注一波 小小作者 帮忙涨涨粉丝 ,谢谢啦。