您的位置:首页 > 编程语言 > Java开发

Java学习笔记【静态域与静态方法】

2015-09-24 15:15 274 查看

1、静态域

如果将域定义为static,每个类中只有一个这样的域。
class Employee
{
private static int nextId = 1;
private int id;
...
}
//现在,每一个雇员对象都有一个自己的id域,但这个类的所有实例将共享一个nextId域。
public void setId()
{
id = nextId;
nextId++;
}

假定为“难免有错”设定雇员标识码:

难免有错.setId();			//“难免有错”的id域被设置为静态域nextId当前的值,并且静态域nextId的值加1:
难免有错.id = Employee.nextId;
Employee.nextId++;


2、静态常量

示例:

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


可以采用Math.PI的形式获得这个常量。

若省略static,PI就变成了Math的一个实例域。需要通过Math类的对象访问PI,并且每个Math对象都有它自己的一份PI拷贝。

3、静态方法

静态方法是一种不能对对象实施操作的方法。例如,Math类的pow方法就是一个静态方法。

表达式:Math.pow(x,a) 计算x的a次方。运算时不使用任何Math对象,即无隐式参数。

可以认为静态方法是没有this参数的方法。

因为静态对象不能操作对象,所以不能在静态方法中访问实例域。但是,静态方法可以访问自身类中的静态域。

使用静态方法的实例:
public class Employee
{
public static int getNextId()
{
return nextId; //returns static field
}
}
//通过类名调用这个方法:
int n = Employee.getNextId();


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

I、一个方法不需要访问对象状态,其所需的参数都是通过显式参数提供。

II、一个方法只需要访问类的静态域。

4、工厂方法

静态方法还有一种常见的用途。NumberFormat类使用工厂方法产生不同风格的格式对象。

5、main方法

public class App
{
public static void main(String[] args)
{
....
}
}
main方法不对任何对象进行操作。同理,main方法也是一个静态方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: