Java中static讲解

提及到static关键字我们知道它可以修饰类、方法、属性、代码块。static关键字最大的作用就是在没有创建任何对象的情况下,也能通过类名来调用static方法。这是static方法的主要用途。

一、使用static关键字注意的几点

  1):静态方法不能使用非静态的变量和调用非静态的方法,反过来是可以的。因为非静态方法/变量是必须依赖具体的对象才能够执行。

  2):静态方法是不依赖任何对象进行访问的,所以静态方法没有this

  3):非静态方法中可以访问静态方法和变量。

二、静态变量和成员变量的区别

  1):被static修饰的变量叫静态变量,它是被对象所共享的,在内存中只存在一个副本,类一加载的时候就初始化。

非静态变量是被对象所拥有的,内存中存在多个副本且互不影响,只有在创建对象的时候才能被初始化。

  2):静态变量和代码块的加载顺序是按其定义的顺序依次加载的。

三、静态代码块

  static {
      //静态代码块内容
}

以上格式就是一个静态代码块,静态代码块是可以出现在类的任何一个地方,一个类中可以存在多个静态代码块,静态代码块在类一加载的时候就被初始化,初始化的顺序是根据静态代码块定义的顺序有关,按static块顺序依次执行。

  2):静态代码块的作用:

讲静态代码块的作用之前我们来看一个例子:

  1):没有使用静态代码块之前

  2):使用静态代码块之后

在上面这个获取系统当前时间的例子中,如果很多地方需要获取系统当前时间,我们每次都得调用这个方法,在每次调用的时候,都会创建一个SimpleDateFormat的对象sim,和一个new Date()这样会造成资源消耗。但是我们使用了静态代码块后,我们始终只需要创建一个sim 和一个new date(),这样减少了系统资源浪费。一定程度上提升了性能。所以我们建议将只需要一次性初始化的操作都放在静态代码块中进行操作。

猜你喜欢

转载自www.cnblogs.com/Tom2-xiao-ye/p/9921932.html