静态域与静态方法

如果将域定义为 static , 每个类中只有一个这样的域。 而每一个对象对于所有的实例域 却都有自己的一份拷贝。 例如, 假定需要给每一个雇员賦予唯一的标识码。 这里给 Employee 类添加一个实例域 id 和一个静态域 nextld:

class Employee

{private static int nextld = 1;

private int id;}

 

每一个雇员对象都有一个自己的 id 域,

但这个类的所有实例将共享一个 iiextld 域。

换句话说, 如果有 1000 个 Employee 类的对象, 则有 1000 个实例域 id。

但是, 只有一 个静态域 nextld。 即使没有一个雇员对象, 静态域 nextld 也存在。

它属于类, 而不属于任何 独立的对象。

 

静态变量使用得比较少, 但静态常量却使用得比较多。 例如, 在 Math 类中定义了一个 静态常量:

public static final double PI = 3.14159265358979323846;

于每个类对象都可以对公有域进行修改, 所以, 最好不要将域设计 为public。

果查看一下 System 类, 就会发现有一个 setOut 方法, 它可以将 System.out 设 置为不同的流。 读者可能会感到奇怪, 为什么这个方法可以修改 final 变量的值。 原因在 于, setOut 方法是一个本地方法, 而不是用 Java 语言实现的。 本地方法可以绕过 Java 语 言的存取控制机制。 这是一种特殊的方法, 在自己编写程序时, 不应该这样处理。

静态方法

静态方法是一种不能向?象?施操作的方法

可以????静态方法是?有 this的方法(在一?非静态的方法中,this??表示??

方法的?式??,

的??静态方法不能?? Id?例域, 因?它不能操作?象。但是,??方法可

以??自身?中的??域。下面是使用?种??方法的一?示例:

public static int getNextldO

{

return nextld; // returns static field }

可以通??名?用??方法: int n = Employee.getNextldO;

??方法可以省略??字 static?? 答案是肯定的。

 

但是, 需要通? Employee??象的 引用?用??方法。

在下面?种情?下使用??方法:
•一 方法不需要访问对象状态, 其所

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值