计算实例变量的次数增加

时间:2015-02-01 01:14:45

标签: java object constructor

我将实例变量设置为唯一值

private int registrationCourse = 2015000;中的object class

我希望每次从1调用此课程编号时{}增加main method,因此它会变为20150012015002等。

我认为要做到这一点,我必须创建一个类变量并将其初始化为0,因为它没有绑定到类。 (如果我错了,请纠正我)

private static int numCourses = 0;

然后我必须创建一个构造函数,并初始化其他实例变量,并以下列方式递增注册号:

numCourses =  registrationCourse;
numCourses++;

然而,我对处理构造函数是一个超级新手,所以我不明白为什么我不必做while循环来做这件事。我的另一个问题是,当我尝试返回registrationCourse数字时,对于这两种情况,它显然只返回最后一个递增的值,并且我想返回一个不同的值,每个object增加一个。任何解释??

2 个答案:

答案 0 :(得分:1)

您的静态值将在类实例的所有实例中共享。如果您希望维护在实例构造期间适用的实际数字,则需要将其复制到非静态(实例绑定)变量。

例如:

class c{
   private int registrationCourse = 2015000;
   private int incrementalValue = 0;
   private static int nextIncrementalValue = 0;

  public c(){
     nextIncrementalValue +=1; //increase static, shared value.
     this.incrementalValue = nextIncrementalValue; // set CURRENT value for later reference.
  }
}

如果您现在要构建3个c个实例,则每个nextIncrementalValue(= 3)的相同值都会因为它们共享相同的静态变量,但任何实例都有自己的incrementalValue(= {1,2,3}

答案 1 :(得分:0)

关于构造函数的问题,您不需要while循环,因为您的应用程序只关心计算创建了多少个对象。对于每个对象,都会调用构造函数,因此您只需要构造函数中的增量代码。如果你决定需要实例化多少个对象,你可能需要在main()代码中使用while循环:

int i = 0;
while(i<10) {
    Course course = new Course(); // assuming your class is named Course
}

这将使计数器增加10次。

关于返回每个对象创建的值的第二个问题,您需要一个“实例”变量。因此,创建另一个非静态变量并将numCourses值保存在其中:

static int totalCourses = 2015000;
int courseNumber = 0;

public Course() {
    totalCourses++;
    courseNumber = totalCourses;
}

所以,这里发生的事情是,totalCourses只是继续增加你拥有的每个新对象。然后保存每个课程编号,每个课程不同。

希望这有帮助。