每日一课 | Java Static关键字示例

    科技2022-07-12  114

    Java中的static关键字是用于创建内存有效代码的修饰符。它有助于管理对象,变量和方法定义所占用的内存。static关键字可确保在内存中仅创建一个相关方法,对象或变量的实例。

    当需要一个类级别的变量来管理某些属性值时,以及需要一个类级别的方法来执行某些操作时,都可以使用它。下面每个内容中都会详细讨论static关键字的使用。

    1. STATIC关键字作为变量修饰符

    当将static关键字用于变量时,它指示每个类仅应实例化一个变量。根据其数据类型,它占用一个存储单元,而与创建对象的数量无关。因此,static关键字的值在特定类的每个对象之间是公共的。

    静态变量是一种变量类型,不需要对象实例即可访问它。可以使用语法<classname>.<variablename>直接访问它<classname>.<variablename>

    让我们通过一个例子来理解它:

    下面的代码是一个类,其中包含Employee的某些详细信息。它包含一个静态变量“ count”,该变量用于计算正在创建的员工数量。

    Employee.java 

    package com.mkyong; public class Employee {   static int count = 0;   private String name;   private int leaves;   Employee() {     count++;   }   Employee(String name, int leaves) {     this.name = name;     this.leaves = leaves;     count++;   }   public static int getCount() {     return count;   }   public static void setCount(int count) {     Employee.count = count;   }   public String getName() {     return name;   }   public void setName(String name) {     this.name = name;   }   public int getLeaves() {     return leaves;   }   public void setLeaves(int leaves) {     this.leaves = leaves;   } }

    下面的类是一个测试类,用于测试静态变量的功能和工作情况。在执行代码时,您可以看到静态变量“ count”的值在所有员工对象之间共享。

    StaticVariableExample.java 

    package com.mkyong; public class StaticVariableExample {   public static void main(String[] args) {     Employee e1 = new Employee("Employee1", 5);     Employee e2 = new Employee("Employee2", 10);     System.out.println("Employee Count using e1: " + e1.getCount());     System.out.println("Employee Count using e2: " + e2.getCount());     System.out.println("Employee Count using static reference: " + Employee.getCount());   } }

    在Employee类中,“ count”是一个静态变量,每个类仅被实例化一次。因此,无论我们创建的对象数量如何,“ count”的值都会在所有对象中共享,这可以在输出中清楚地看到。

    运行StaticExample类时,输出如下所示: 

    Employee Count using e1: 2 Employee Count using e2: 2 Employee Count using static reference: 2

    2. STATIC关键字作为方法修饰符

    当开发人员希望直接向用户公开该方法时,即无需创建用于调用该方法的实际对象,便可以使用Java中的静态方法。静态方法可以使用语法<classname>.<methodname>直接调用。

    静态方法只能对静态变量和对象起作用。除此之外,任何由静态方法完成的方法调用都应依次引用静态方法。

    让我们通过一个例子来理解这一点:

    StaticMethodExample.java 

    package com.mkyong; public class StaticMethodExample {   private int x = 0;   private static int y = 0;   public static void main(String[] args) {     // If uncommented, x++ gives compilation error     // x++;     // y++ works fine without compilation error     y++;     // If uncommented, sayHello() gives compilation error     // sayHello();     // sayHi() works fine without compilation error     sayHi();     System.out.println("Value of y is: " + y);   }   public void sayHello() {     System.out.println("Hello");   }   public static void sayHi() {     System.out.println("Hi");   } }

    请注意上面代码中的注释。它们指定了上下文,在这些上下文中,从静态函数引用非静态变量或方法可能会导致编译错误。执行上面的代码后,我们得到以下输出。 

    Hi Value of y is: 1

    参考文献:

    静态关键字Javadocs

    有关静态关键字的更多讨论

    翻译自: https://mkyong.com/java/java-static-keyword-example/

    推荐阅读--

    每日一课 | Java 中如何将 ArrayList 与 HashSet 互相转换?

    每日一课 | JavaScript基础

    每日一课 | JavaScript的事件

    每日一课 | JavaScript的内置对象

    球分享

    球点赞

    球在看

    Processed: 0.012, SQL: 8