什么是static?
静态 修饰符
static可以修饰什么?
一.成员变量
二.成员方法
被static修饰的成员变量有什么特点?
特点一.被类的所有对象共享
- 图示
- 当我们没有给stu3对象赋值时,也能打印出static修饰的学校变量
静态修饰的变量有哪些应用场景?
场景一
学校的所有学生,学校就是共享的
场景二
同时在线人数
特点二.多了一种调用方式,可以优先通过类名调用
- 图示
特点三.随着类的加载而加载,优先于对象存在
- 图示
*通过内存图来理解staic
二.static修饰成员方法有什么特点?
工具类
- 案例
什么是工具类?
- 不是描述事物的,帮我们完成一些事情
- 里面存在的所有方法都是为其他类提供服务的
- 里面并没有封装数据
推演逻辑
调用舒服 +staitc ->>>多了一种调用方式 类名.方法名->>>>不需要在测试类创建对象>>>>所有都用类名调用,创建对象没有意义>>>所有方法静态修饰>>>>私有类的构造方法>>>不让别人创建对象
如果发现一个类中,所有的方法 全都是static修饰需要做什么?
- 私有化该类构造方法
目的
- 为了不让其他类再创建对象
例子
- System典型工具类
成员方法什么时候加static?
-
制作工具类时
-
想通过类名调用方法时
静态方法的注意事项
1. 只能访问静态成员(直接访问)
为什么?:
静态成员在类加载时候就出现在堆中的静态区当中,非静态成员的变量或者方法只有在通过new类名创建了对象之后才能出现
想要访问非静态创建对象 通过对象调用
2.static中不允许使用this关键字
this:表示当前对象的引用
this依赖于对象 静态在类加载时出现 必须在对象创建之前
重新看主方法(main方法)
public static void main(String[] args){}
public
最大的权限修饰符
被JVM调用,权限足够大
static
被JVM调用不需要创建对象
因为main方法是静态的,所以测试类中其他方法也需要是静态的(静态只能访问静态)
void
被JVM调用不需要返回值
main
通用名称 不是关键字,能被JVM识别
String[] args
以前做键盘录入,现在没用
小技巧
一.统一修改变量名
二.退出jvm虚拟机
System.exit(0);
英语单词
- instantiate
- 音标:ɪnsˈtænʃɪeɪt
- 实例化