import java.io.*; 
import java.util.*; 
public class wren4255 

private String msg; 
public wren4255() { this("good morning"); } 
public wren4255(String msg) { this.msg = msg; } 
public String toString() { return ("msg:" + msg); } public static void main(String args[]){ 
System.out.print(new wren4255()); 


结果是 msg:good morning我认为,程序没有执行public String toString() 函数,怎么会输出东西呢??

解决方案 »

  1.   

    System.out.print(new wren4255()); 这个地方会自动调用new wren4255()的toString()方法.一点不怪.是你经验不足.
      

  2.   

    会自动调用TOSTRING方法.楼上正解.就像J2EE里的回调方法一样.
      

  3.   

    看了一下JDK的源代码,是调用String.valueOf(o);
    然后是在String的valueOf(Object o)中调用这个o.toString()方法的.
      

  4.   

     public void print(Object obj) {
    write(String.valueOf(obj));
        }
    ---------------- public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
        }
      

  5.   

      不自动调用,System.out.print(new wren4255());  这句就没意义了
      看多了自然会知道.
      

  6.   

    这个函数自动调用了toString()函数
      

  7.   


    toString()原来是这样用的~~