Java Static关键字示例

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

下载源代码

下载它– StaticKeyword.zip(6 KB)

参考文献

  1. 静态关键字Javadocs
  2. 有关静态关键字的更多讨论

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值