static

126 阅读2分钟

什么是static?

静态 修饰符

static可以修饰什么?

一.成员变量

二.成员方法

被static修饰的成员变量有什么特点?

特点一.被类的所有对象共享

  • 图示 image.png
  • 当我们没有给stu3对象赋值时,也能打印出static修饰的学校变量 image.png

静态修饰的变量有哪些应用场景?

场景一

学校的所有学生,学校就是共享的

场景二

同时在线人数 image.png

特点二.多了一种调用方式,可以优先通过类名调用

  • 图示 image.png

特点三.随着类的加载而加载,优先于对象存在

  • 图示 image.png

*通过内存图来理解staic

image.png

二.static修饰成员方法有什么特点?

工具类

  • 案例 image.png

什么是工具类?

  • 不是描述事物的,帮我们完成一些事情
  • 里面存在的所有方法都是为其他类提供服务的
  • 里面并没有封装数据

推演逻辑

调用舒服 +staitc ->>>多了一种调用方式 类名.方法名->>>>不需要在测试类创建对象>>>>所有都用类名调用,创建对象没有意义>>>所有方法静态修饰>>>>私有类的构造方法>>>不让别人创建对象

如果发现一个类中,所有的方法 全都是static修饰需要做什么?

  • 私有化该类构造方法

目的

  • 为了不让其他类再创建对象

例子

  • System典型工具类

成员方法什么时候加static?

  1. 制作工具类时

  2. 想通过类名调用方法时

静态方法的注意事项

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

以前做键盘录入,现在没用

小技巧

一.统一修改变量名

image.png

二.退出jvm虚拟机

System.exit(0);

  • image.png

英语单词

  • instantiate
  • 音标:ɪnsˈtænʃɪeɪt
  • 实例化