我刚刚开始学习Java,并试图创建一个“ Counter”类来补充另一个“ CounterTesting”类作为对象。这就是我设置Counter类的方式:
public class Counter
{
public int count;
public Counter()
{
count = 0
}
void click()
{
count += 1;
}
}
这是我的主要课程:
public class CounterTesting
{
public static void main(String[] args)
{
Counter c1 = new Counter();
Counter c2 = new Counter();
System.out.println("Counter 1: " + c1 + " Counter 2: " + c2);
c1.click();
c1.click();
c1.click();
c1.click();
c1.click();
c2.click();
c2.click();
c2.click();
System.out.println("Counter 1: " + c1 + " Counter 2: " + c2);
}
}
但是当我运行它时,无论何时打印c1和c2都会打印“ Counter @ 686a1b3f”。我认为发生的事情是调用类本身而不是变量,但是我不确定如何修复它。 预先感谢!
答案 0 :(得分:1)
是的,所以它正在打印出类的名称以及相对于该类的hashCode()。这是因为java中的每个Object都有一个toString函数,该函数可以执行我刚刚描述的操作。如果覆盖toString函数以提供相对信息(如计数器整数),则可以打印它。一种替代方法是直接在Counter类中引用counter变量。
@Override
public String toString() {
return String.format("counter=%s, counter);
}