Java基础-静态域和静态方法

静态域

带有static标识符,这部分变量具有独立的存储空间,与对象无关,而是与整个类相关,类的所有实例共享静态域,不属于任何独立的对象。

类没有创建实例,静态域也存在。

在类第一次加载的时候,会进行静态域的初始化。

静态初始化语句和静态初始化块按照类定义的顺序执行

例如:

class Student{
    private static int nextId = 1;
    private int id;
}

 每个学生对象,都有自己的id,但是这个学生类的所有实例对象将共享一个nextId域。几时没有一个对象存在,静态域nextId仍然存在。

 

静态常量

静态变量使用的比较少,但是静态常量使用的比较多

例如:

1 public class Math {
2     public static final double PI = 3.141592653;
3 }

通过Math.PI获得常量。若去掉static,则需要通过Math类对象访问

 

ps:final关键字讲解

 

静态方法

java语言中的实例方法属于对象的成员,而不是类的成员。静态方法属于类的成员。

静态方法是不能向对象实施操作的方法,因为它没有this参数(隐式参数),就不能访问类中实例域,只能访问类中的静态域。

直接通过类名调用静态方法

1 class Employee {
2     private static int Id;
3     public static int getId() {
4         return Id;
5     }
6 }
7 
8 int n = Employee.getId();

下面两种情况可使用静态方法:

  1. 不需要访问对象状态,所需参数都通过显示参数提供 (Math.pow)
  2. 只需要访问类的静态域 (Employee.getId)

类方法可以调用其他类的static方法。
可以在类方法中生成实例对象再调用实例方法。

调用类方法的方式:可由实例对象调用,还可以由类名直接调用。

另外,在类方法中不能使用 this 或 super。 关于类方法的使用,有如下一些限制:

  1. 在类方法中不能引用对象变量。
  2. 在类方法中不能使用super、this关键字。
  3. 类方法不能调用类中的对象方法。

 

posted @ 2021-09-23 19:10  r1-12king  阅读(287)  评论(0编辑  收藏  举报