Java 字符串输出:类@#

Java 字符串输出:类@#,java,string,output,memory-address,Java,String,Output,Memory Address,假设我有三门课: 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类:

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();
    }
  }
}

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

您打印的是数组而不是数组中的对象。因此,它正在打印对象的地址(编号)和它所属的对象

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

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

尝试显示您的输出“我的程序”中的输出为B@1172e08
for(int i = 0; i < 100; ++i)
{
    a[i].print();
}