title: 关于显试和隐试调用toString()的问题大家知道,每个非基本 
desc: 大家知道,每个非基本类型的对象都有一个toString()方法。还有,一个非基本类型的对象初始化时,如果不给它实例化,它就应该被赋予一个默认值null。而且这个调用任何方法都会抛出异常。但是,请看下面的例子:classSp{privateStrings;Soap(){ intln("Soap()");s=newString("Constructed");}publicStringtoString(){returns;}}publicclassBath{privateString//Initializingatpointofd ("Happy"),s大家知道,每个非基本类型的对象都有一个toString()方法。还有,一个非基本类型的对象初始化时,如果不给它实例化,它就应该被赋予一个默认值null。而且这个调用任何方法都会抛出异常。但是,请看下面的例子:classSp{privateStrings;Soap(){ intln("Soap()");s=newString("Constructed");}publicStringtoString(){returns;}}publicclassBath{privateString//Initializingatpointofd ("Happy"),s2="Happy",s3,s4;privateSoapcastille;privateinti;privatefloattoy;publicBath(){ intln("InsideBath()");s3=newString("Joy");i=47;toy=3.14f;castille=newSoap();}publicStringtoString(){if(s4==null)//Delayediniti ("Joy");return"s1="+s1+"\n"+"s2="+s2+"\n"+"s3="+s3+"\n"+"s4="+s4+"\n"+"i="+i+"\n"+"toy="+toy+"\n"+"castille="+castille;}publicstaticvoidmain(String[]args){Bathb=newBath(); intln(b);}}这个位置"castille="+castille;castille隐试调用了toString(),没有抛出任何异常。而如果 String()就会抛出异常。为什么?隐试调用和显试调用有区别吗?
answer: //2006-9-25
  今天查了一下发现：一个字符串与任意对象的链接会产生对该对象toString方法的隐试调用。
  
  我猜是不是跟 int()那个差不多阿，就是隐式调用的时候捕获所有例外。
  
  
  
  //2006-9-24
  我不发现存在隐式调用和现实调用的问题，我觉得是+号可以连接null，但 String()；先抛出了例外，就不存在+连接null的情况。