Fork me on GitHub

Java static keyword

Java中static关键字主要用于内存管理(是的,你没听错)。我们可以将它应用到变量、方法、代码块、嵌套类以及导入包中。静态关键字属于类,而不是类的实例。

1.静态变量

  1. 静态变量可以被视为所有对象通用的属性,例如员工的公司名,学生的学校名
  2. 静态变量只在类加载时在方法区(class area)中获取内存

  优点:节省内存

2.静态方法

  1. 静态方法属于类而不是类的对象
  2. 静态方法可以被调用在没有类的实例的情况下,言外之意,静态方法可以通过类调用,自然也可以通过类对象调用
  3. 静态方法可以访问静态数据成员并更改他们的值

  限制:主要有两个限制

  1. 静态方法不能使用非静态数据成员或直接调用非静态方法
  2. 在静态上下文中不能使用this或super关键字,因为他们就没有隐式接受this参数

  Q&A:为什么Java的main方法是静态的?

    因为调用一个静态方法不需要一个对象。如果main方法是一个非静态方法,那JVM需要先创建一个对象然后才调用main方法,这将导致额外的内存分配

3.静态代码块

  1. 静态代码块被用于初始化静态数据成员
  2. 静态代码块在加载main方法之前被执行,可以对比instance initalizer block的执行时间

  Q&A:我们能执行一个没有main方法的程序吗?

  不行。在JDK1.6以前唯一的方式是使用静态代码块,但是自从JDK1.7,他不可能被执行在没有main方法的时候

4.静态内部类

  1. 静态内部类可以使用外部类的静态数据成员和方法,但不能使用非静态数据成员和方法。不同于非静态内部类,可以使用外部类的所有数据成员和方法
  2. 静态内部类常用于build模式

5.静态导包

  1. 可以少写包的前缀,让代码更优美
  2. 不建议使用

原文链接:https://www.javatpoint.com/static-keyword-in-java

 

posted @ 2018-08-23 22:28  gitmoji  阅读(136)  评论(0编辑  收藏  举报