java 静态成员_java静态成员(静态域、静态方法、常量)详细讲解

静态成员

1.静态域

当创建一个类的许多对象时,每个对象都有属于自己的非静态域,这些变量存储在不同的内存位置。有时,我们希望某个域被所有对象共享,或者说这个域属于整个类而不是每个对象。使用static修饰符的域被称为静态域或类变量,该类的每一个实例共享这个变量,这个变量存在于内存中的一个固定的位置。该类的任何实例都可以更改静态域的值,也可以在不创建类实例的情况下访问静态域。

例如,假设要创建多个Bicycle对象并为每个对象分配一个ID,第一个对象ID为1。此ID号对于每个对象都是唯一的,因此是一个实例变量。同时,您需要一个变量来表示Bicycle已创建的对象数,以便知道要分配给下一个对象的ID。这个域与任何单个对象无关,而与整个类有关,可以将这个域设置为静态域。例如:

public class Bicycle {

private int cadence;

private int gear;

private int speed;

private int id;

private static int numberOfBicycles = 0;

public Bicycle(int startCadence, int startSpeed, int startGear){

gear = startGear;

cadence = startCadence;

speed = startSpeed;

id = ++numberOfBicycles;

}

}

每当创建一个Bicycle类的实例时,numberOfBicycles的值都会加1,然后将它的值作为ID分配给这个实例。

2.静态方法

静态方法是指使用static修饰的方法。和静态域一样,它属于类,而不是某个实例。可以通过类名去调用它而不用先创建类的实例。使用下面的语法调用静态方法:

ClassName.methodName(args);

尽管也可以通过创建实例去访问类的静态方法,但不鼓励这么做。通常使用静态方法去访问静态域,例如,可以通过一个静态方法去访问Bicycle类的静态域numberOfBicycles:

public static int getNumberOfBicycles() {

return numberOfBicycles;

}

静态域、静态方法、非静态域和非静态方法之间的访问规则如下:

非静态方法可以访问其他非静态方法和非静态域;

非静态方法可以访问静态方法和静态域;

静态方法可以访问其他静态方法和静态域;

静态方法不能访问非静态方法和非静态域。

总的来说就是非静态方法可以访问所有成员,而静态方法只能访问静态成员。

3.常量

static关键字常和final关键字一起用来定义常量。final修饰符意味着域的值不能改变。例如,下面的变量定义了一个常量PI,它的值是圆周率:

static final double PI = 3.141592653589793;

被final修饰的变量一旦赋值以后就不能再修改。常量的命名规范是大写每个字母并且使用下划线(_)分隔每个单词。

如果使用fianl修饰引用类型的变量,并不是说这个变量引用的对象不能发生任何改变,而是说这个变量不能再去引用别的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值