class Soap
{
private String s;
Soap()
{
System.out.println("Soap()");
s=new String("yan zi jing");
}
public String toString()
{
return s;
}
}public class Bath
{
private String
  s1=new String("wang jian bing"),
  s2="wang jian bing",
  s3,s4;
private Soap cas; //声明一个cas对象
private int i;
private float toy;
public Bath()
{
System.out.println("在Baath()之中");
s3=new String("Joy");
i=45;
toy=3.14f;
cas=new Soap();
}

public String toString ()
{
if(s4==null)
  s4=new String("xuefei");
    return
      "s1= "+s1+"\n"+
      "s2= "+s2+"\n"+
      "s3= "+s3+"\n"+
      "s4= "+s4+"\n"+
      "i= "+i+"\n"+
      "toy= "+toy+"\n"+
      "cas= "+cas;   
}

public static void main(String[] args)
{
Bath b=new Bath();
//b.toString();
System.out.println(b);
/**这一行System.out.println(b),我不明白是什么意思?
 *他为什么可以调用Bath类中的toString()方法;
 *而把System.out.println(b)屏蔽后,用b.toString()方法怎么不
 *会输出return的结果呢?
 *这两行的区别是什么呢?请你们帮我讲讲,谢谢!
 */  
}
}

解决方案 »

  1.   

    Bath b=new Bath();
    他建立了Bath的对象b
    那么 b.toString()不就能调用了吗?
    你把System.out.println(b)屏蔽后
    只有b.toString()方法的返回值
    System.out.println(b)是输出返回值啊我建议你先去看看JAVA基础
      

  2.   

    System.out.println(arg);的参数如果是类对象的话系统主动调用其toString()方法.这时,它跟System.out.println(arg.toString());起到的作用是一样的.
      

  3.   

    JAVA基础不牢啊!你说的不输出,就像:
    int i=2+3;
    不会输出5一样,只执行操作,没有打印,屏幕上当然看不到结果.
    如果想要调用toString()方法有输出结果的话,在实现的时候加上输出语句即可
    但是那样是违反编程思想的,一般不那么干!
      

  4.   

    楼上正解。
    其实这段代码,讲的就是toString()方法的用法。正是基础。
    楼主看的也正是基础。好象是THINKING IN JAVA 上的吧。
      

  5.   

    调用System.out.println(b);
    系统会自动匹配b的toString方法。
      

  6.   

    这个不难啊。的确是TIJ里面的
    ------ 以下是签名 ------
    SoftDN.com, 提供免费的项目管理平台:SVN仓库、需求管理、BUG跟踪、任务管理、在线论坛、网站空间、项目存储及完整的备份等。欢迎网友光临建立项目,开创自己的梦想。
    地址:http://www.softdn.com   http://www.softdn.cn
      

  7.   

    同意楼上
    toString()方法只是返回String类型对象
    但是不会输出
    需要借助System.out.println()方法来输出