静态域、静态变量、静态方法

本文详细介绍了Java中的静态域、静态常量和静态方法。静态域是所有对象共享的,而静态常量由static final修饰,如Math.PI。静态方法不依赖于对象,如Math.pow,它们可以直接通过类名调用,不涉及this关键字。使用静态方法的情况包括:方法不需要访问对象状态或只需访问类的静态域。
摘要由CSDN通过智能技术生成

静态域

static关键字修饰的域

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

这里Employee对象有一个实例域id和一个静态域nextId,每一个Employee对象都有一个实例域id,但是所有的对象共享一个静态域nextId。假设有1000个Employee对象,则有1000个实例域id,但是,只有一个静态域nextId

即使没有一个Employee对象,静态域nextId也存在。它属于类,不属于对象。

静态常量

static final修饰的变量为静态常量,注意这里的关键字,少一个都不是静态常量。

public class Math {
	public static final double PI = 3.14159265358979323846;
}

在程序中,可以使用Math.PI的形式获得这个常量

如果关键字static被省略,PI就变成了Math类的一个实例域。需要通过Math类的对象来访问PI,并且每一个Math对象都有它的一份PI拷贝。

如果关键字final被省略,PI就变成了一个静态域。

静态方法

静态方法是一种不能向对象实施操作的方法。例如:Math类的pow方法就是一个静态方法,在运算时,不使用任何Math对象,换句话说,没有隐式的参数this

因为静态方法不能操作对象,所以不能在静态方法中访问实例域,但是静态方法可以访问自身类中的静态域。可以使用对象调用静态方法,但是这样容易引起混淆,因为计算的结果与对象毫无关系,建议还是使用类名,而不是类对象调用静态方法。

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

  1. 一个方法不需要访问对象的状态,其所需的参数都是通过显式的提供(例如:Math.pow

  2. 一个方法只需访问类的静态域(例如:Employee.getNextId)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值