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.   

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

  2.   

    楼主确实是菜鸟.
    b.toString()方法只把它转化在一个字符串,没有在屏幕上打印呀,所以你看不到.
    你只有把它打印出来才能看到呀!