static修饰符

在java语言中,没有实际意义上的全局变量。变量最大的作用域范围就是类。如果两个类或多个类之间需要共享数据,单纯依靠参数进行传递,就会花费大量的代码去完成。

实际上,完全可以利用java语言静态变量实现 数据的共享。在java语言中,被static关键字修饰的块、方法和变量被称为静态块、静态方法、静态变量。静态变量和静态方法

可以直接通过类名来访问。静态代码块,当java虚拟机加载类时,就会执行该代码块。静态变量(也叫类变量)和静态方法归某个类所有,不依赖于类的特定实例,被类的

所有实例共享,只要这个类被加载,java虚拟机就能根据类名在运行时数据区的方法区内定位到它们。

静态变量和实例变量的区别:

  • 静态方法在内存中只有一个拷贝,运行时Java虚拟机只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存分配。可以直接通过类名访问静态方法。
  • 对于实例变量,每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响。

使用静态方法时,应注意下面3个原则:

  • 类的静态方法只能访问其他的静态成员;
  • 静态方法不能使用this和super;
  • 静态方法不能被覆盖为非静态方法。
  • 静态方法内部使用非静态成员变量,否则将出现语法错误。

静态代码块 指位于类声明的内部,方法和构造方法的外部,使用static修饰的代码块。静态代码块在该类第一次被使用时执行一次,以后再也不执行。

原文地址:https://www.cnblogs.com/zheting/p/7751764.html