为什么我们将变量或方法声明为静态?
#编程 #java #oops

当我开始编程时,我经常会跳入一个概念的实现和执行,而无需理解复杂性或对相同的需求。
在此博客中,我将引导您了解Java中的基本概念,我们将深入研究它的必要性。

在跳入静态之前,让我们看看对象和变量如何存储在Java中。

Alt Text

对象的引用存储在堆栈中,实例,变量和方法存储在堆中。

静态变量
在静态变量的情况下,所有参考都有A 共享资源
Alt Text

因此,当所有对象之间共享变量或其值的更改会影响所有参考,应将其声明为静态。
让我们看一些实际示例以更好地理解它:

  1. 飞行票务柜台
    航班中的座位总数应被声明为静态,因为在预订座位时,每个用户的数量都会更新,每个用户将看到可用座椅的更新值。

  2. 电子商务应用程序
    在这里,当我们添加来自多个来源的项目时,可以使购物车中的总项目保持静态。当我们添加一个项目时,总项目更改为1,当添加其他项目时,我们需要将其值更新为2。

静态方法

当您在Java代码中看到静态方法时,您会假设什么?当读者看到静态方法时,读者做出了什么推理和假设?这很重要,以确保我们正确使用静态方法。

  1. 经验法则是,问自己“即使尚未创建对象,也要称呼此方法是有意义的?”。如果是,则应将其命名为静态。
  2. 如果方法未修改对象的状态,或者不使用任何实例变量。
  3. 如果仅适用于提供的参数,则方法是静态的良好候选者。例如public int factorial(int number){},此方法仅以作为参数提供的数字运行。
  4. 静态方法作为类的单个副本存在,而实例方法作为多个副本存在,因此在静态变量中,特定代码也由所有人共享。

让我们看一些实际示例:

  1. 在汽车类中,我们有一种方法:
    double convertmpgtokpl(双mpg)
    该方法负责将MPG转换为KPL。现在,可能没有创建汽车的实例,但是有人想使用这种方法,因此使其变得静态是有意义的。

  2. 在组织中,我们有一种方法:
    getallemployees()
    我们有两个不同的物体OBJ1,OBJ2。 ob1.getallemployes和ob2.getAllemployes会产生不同的结果吗?
    那么,为什么我们需要OB1和OB2呢?由于对象创建没有产生不同的状态,因此在这里创建对象是没有意义的,因此可以通过className直接访问该方法,因此静态。