public class TestMyPoint
{
public static void main(String[] args)
{
MyPoint start=new MyPoint();
MyPoint end=new MyPoint();
start.x=10;
start.y=10; end.x=20;
end.y=30;
System.out.println("Start point is "+start);
}
};class MyPoint {
  public int x;
  public int y;  public String toString() {
    return ("[" + x + "," + y + "]"); //方法toString()并不是构造器,为什么这里会自动的返回值呢?
  }
}

解决方案 »

  1.   

    jdk文档里讲的很清楚,这里的toString被调用的条件是当你打印一个对象或已被指向对象的引用时,就会自动调用!toString方法是覆盖了object的toString方法.
      

  2.   

    toString()是继承自Object的, 当一个字符串和一个Object执行相加时, 就会自动调用toString()方法返回的值. println()方法也可以直接接受Object参数, 这时也是调用toString().
      

  3.   


    因为("[" + x + "," + y + "]"); 
    会被转换为StringBuffer sb = new StringBuffer();
    sb.append("[");
    .....return sb.toString();
      

  4.   

    public String toString() {
               ^
               |    这是返回类型,如果是void 就不能返回值。    return ("[" + x + "," + y + "]"); //方法toString()并不是构造器,为什么这里会自动的返回值呢?
      }另外构造器也不自动的返回值呀!