201671010145 2016-2017《Java程序设计》静态域与静态方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了201671010145 2016-2017《Java程序设计》静态域与静态方法相关的知识,希望对你有一定的参考价值。

1.静态域

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

 class Employee

 {

     private int id;

     private static int nextId=1;

 }

现在,每一个雇员对象都有一个自己的id域,但这个类的所有实例将共享一个nextid域,换句话说,如果有1000个Employee类的对象,则有1000个实例域id,但是只有一个静态域nextid,即使没有一个雇员对象,静态域nextil也存在,他属于类,而不属于任何独立的对象。

 下面来实现一个简单的方法:

   public  void  setId()

       id= nextId;

       nextId++;

  }

假设为harry设定雇员标识码:

harry.setId();

那么harry的id域被设置,并且静态域nextId的值加1:

hurry.id= . . .;

Employee.nextId++;

2.静态常量

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

  public class Math

{

public  static final double PI=3.14159265358979323846;

}

在程序中通过Math.PI来访问这个常量

   如果关键字static被省略,PI就成了Math类的一个实例域,即需要用Math类的对向来访问PI,并且每一个Math对象都有他自己的一份PI拷贝。

  已经使用多次的另一个静态常量是System.out,他在System类中声明:

  public  class  System

     public  static  final  PrintStream  out= ...;

 }

 

3.静态方法:

 静态方法是不能想对象实施操作的方法。例如,Math类的pow方法就是一个静态方法。表达式计算幂,他在运行的时候,不使用任何Math对象,换句话,没有隐式的参数。

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

public  static int getNextId()

  return nextId;

 }

可以通过类名调用这个方法:

 int n=Employee.getNextId();

这个方法可以省略static,但是需要通过Employee类对象的引用调用这个方法。

以上是关于201671010145 2016-2017《Java程序设计》静态域与静态方法的主要内容,如果未能解决你的问题,请参考以下文章

201671010145 2016-2017《Java程序设计》Java接口的功能

201671010145 2016-2017《Java程序设计》JAVA语言中,异常处理有哪几种方式?

201671010145 2016-2017-3《Java程序设计》Java中类与对象的区别

201671010145 2016-2017 《Java程序设计》java的继承中什么叫方法覆盖,是如何实现的?

201671010145 赵乾 学习统计

P6883 [COCI2016-2017#3] Kroničan