【问题标题】:String-Output: Class@#字符串输出:类@#
【发布时间】:2013-04-28 14:32:34
【问题描述】:

假设我有三个类:

A类:

public class A {
  private String s;

  public A() {
    s = "blah";
  }

  public void print() {
    System.out.println(s);
  }
}

B类:

public class B{
  private A a[];

  public B(){
    a = new A[100];
    for (int i=0; i<100;i++) {
      a[i] = new A();
    }
  }

  public void print() {
    for (int i=0; i<100; i++) {
      a.print();  //SHOULD BE a[i].print();
    }
  }
}

主类:

public class Main {
  public static void main(String args[]) {
    B b = new B();
    b.print();
  }
}

为什么我会得到像B@# 这样的输出模式,其中# 是一个数字。我认为这与间接寻址有关,但我不太确定。为什么不打印出 100 s

【问题讨论】:

  • 尝试显示你的输出
  • 我程序中的输出是B@1172e08

标签: java string output memory-address


【解决方案1】:

您正在打印数组而不是数组中的对象。结果,它打印了对象的地址(数字)和它所属的对象。

我怀疑您想在 B.print() 中调用每个打印件。您还缺少 i 的增量,这意味着它将无限循环。

for(int i = 0; i < 100; ++i)
{
    a[i].print();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-02
    • 2016-07-27
    • 1970-01-01
    • 2013-05-18
    相关资源
    最近更新 更多