字符串的实例计数器 - Java
Instance Counter for a String - Java
字符串
- 车名。该名称是通过将单词“Car”连接到该对象的实例编号而形成的。比如第一个是Car1,第二个是Car2,依此类推
所以我创建了一个名为 car 的字符串,现在我需要让它在创建新实例时应用递增数字。
public class CarDash {
public String Car ="Car";
public static int instanceNumber;
}
然后它需要计算创建了多少个实例
- 一个 class 变量为所有 class 实例共享。
实例编号
整数
跟踪创建的实例数。
我是否应该在调用某个方法时添加一个计数器?或者在新车 named/created?
时计算
instanceNumber++;
不知道我说的有没有道理...
像下面这样尝试。
public class CarDash {
public String Car ="Car";
public static int instanceNumber;
CarDash() {
instanceNumber++;
Car = Car + instanceNumber;
}
public static int getInstanceCount() {
return instanceNumber;
}
}
您只需要创建一个构造函数并递增 instanceNumber(使用 ++instanceNumber
pre-increment ),然后使用 instanceNumber 变量设置汽车值。
因此您的构造函数将类似于以下内容。
public CarDash(){
Car="Car"+ (++instanceNumber);
}
整个class如下
public class CarDash {
public String Car = "Car";
public static int instanceNumber;
public CarDash(){
this.Car="Car"+ (++instanceNumber);
}
public static void main(String[] args) {
CarDash car=new CarDash();
CarDash car1=new CarDash();
CarDash car2=new CarDash();
System.out.println(car.Car+" "+car1.Car+" "+car2.Car);
}
}
输出如下。
Car1 Car2 Car3
你可以做instanceNumber++;在你的构造函数中。
但要特别小心,以防您将 instanceNumber 作为 stati,因为这将由所有实例共享。
因此,在您的情况下(假设您有 10 个实例),您将获得所有实例的名称 Car10。
例如
public class CarDash {
public String Car ="Car";
public static int instanceNumber;
public CarDash() {
instanceNumber++;
}
public String print(){
return Car+instanceNumber;
}
public static void main(String[] args) {
CarDash carDash=new CarDash();
CarDash carDash1=new CarDash();
CarDash carDash2=new CarDash();
System.out.println(carDash.print());
System.out.println(carDash1.print());
System.out.println(carDash2.print());
}
}
输出::
车3
车3
Car3
更好的方法:
public class CarDash2 {
public String Car ="Car";
public static int instanceNumber;
public int carId;
public CarDash2() {
instanceNumber++;
carId=instanceNumber;
}
public String print(){
return Car+carId;
}
public static void main(String[] args) {
CarDash2 carDash=new CarDash2();
CarDash2 carDash1=new CarDash2();
CarDash2 carDash2=new CarDash2();
System.out.println(carDash.print());
System.out.println(carDash1.print());
System.out.println(carDash2.print());
}
}
输出::
车1
车2
Car3
字符串
- 车名。该名称是通过将单词“Car”连接到该对象的实例编号而形成的。比如第一个是Car1,第二个是Car2,依此类推
所以我创建了一个名为 car 的字符串,现在我需要让它在创建新实例时应用递增数字。
public class CarDash {
public String Car ="Car";
public static int instanceNumber;
}
然后它需要计算创建了多少个实例
- 一个 class 变量为所有 class 实例共享。 实例编号 整数 跟踪创建的实例数。
我是否应该在调用某个方法时添加一个计数器?或者在新车 named/created?
时计算 instanceNumber++;
不知道我说的有没有道理...
像下面这样尝试。
public class CarDash {
public String Car ="Car";
public static int instanceNumber;
CarDash() {
instanceNumber++;
Car = Car + instanceNumber;
}
public static int getInstanceCount() {
return instanceNumber;
}
}
您只需要创建一个构造函数并递增 instanceNumber(使用 ++instanceNumber
pre-increment ),然后使用 instanceNumber 变量设置汽车值。
因此您的构造函数将类似于以下内容。
public CarDash(){
Car="Car"+ (++instanceNumber);
}
整个class如下
public class CarDash {
public String Car = "Car";
public static int instanceNumber;
public CarDash(){
this.Car="Car"+ (++instanceNumber);
}
public static void main(String[] args) {
CarDash car=new CarDash();
CarDash car1=new CarDash();
CarDash car2=new CarDash();
System.out.println(car.Car+" "+car1.Car+" "+car2.Car);
}
}
输出如下。
Car1 Car2 Car3
你可以做instanceNumber++;在你的构造函数中。 但要特别小心,以防您将 instanceNumber 作为 stati,因为这将由所有实例共享。 因此,在您的情况下(假设您有 10 个实例),您将获得所有实例的名称 Car10。 例如
public class CarDash {
public String Car ="Car";
public static int instanceNumber;
public CarDash() {
instanceNumber++;
}
public String print(){
return Car+instanceNumber;
}
public static void main(String[] args) {
CarDash carDash=new CarDash();
CarDash carDash1=new CarDash();
CarDash carDash2=new CarDash();
System.out.println(carDash.print());
System.out.println(carDash1.print());
System.out.println(carDash2.print());
}
}
输出:: 车3 车3 Car3
更好的方法:
public class CarDash2 {
public String Car ="Car";
public static int instanceNumber;
public int carId;
public CarDash2() {
instanceNumber++;
carId=instanceNumber;
}
public String print(){
return Car+carId;
}
public static void main(String[] args) {
CarDash2 carDash=new CarDash2();
CarDash2 carDash1=new CarDash2();
CarDash2 carDash2=new CarDash2();
System.out.println(carDash.print());
System.out.println(carDash1.print());
System.out.println(carDash2.print());
}
}
输出:: 车1 车2 Car3