源程序:
class WaterSource{
      pravite String s;
      WaterSource(){
      System.out.println("WaterSource");
      s=new String("constructed");
}
public String toString(){return s;}
}
public class SprinklerSystem{
      pravite String valve1,valve2,valve3,valve4;
WaterSource;
int i;
float f;
void print(){
System.out.println("valve1="+valve1);
System.out.println("valve2="+valve2);
System.out.println("valve3="+valve3);
System.out.println("valve4="+valve4);
System.out.println("i="+i);
System.out.println("f="+f);
System.out.println("source="+source);
}
public static void main(String[] args){
SprinklerSystem x=new SprinklerSystem ;
x.print();
}
}
WaterSource内定义的一个方法是比较特殊的:toString().大家不久就会知道,每种非基本对象都有一个toString()方法。若编译器本来希望一个string,但却获得某个这样的对象,就会调用这个方法。所以下面这个表达式中:
Syatem.out.println("source"+source);
编译器就会发现我们试图向一个WaterSource添加一个String对象("source=")。这对它来说是不可接受的,因为我们只能将一个字串“添加”到另一个字串,所以它说:“我要调用toString,把source转换成字串!”经过这样的处理后,它就能编译两个字串,并将结果字串传递给一个System.out.println()。每次随同自己创建的一个类允许这种行为的时候,都只需要写一个toString()方法。请问:什么是非基本类型的对象啊?
      为什么要用到toString()的方法啊?
      谢谢!!

解决方案 »

  1.   

    除了那8种基本类别,java里就剩下Object了(Object及其子类都是非基本类型)你上面那一段没明白你想表达什么...
      

  2.   

    nonprimitive type就是除了int,float,boolean,char,double,long,byte这些的其他数据类型。其实剩下的就都是类对象了。toString()可以显式被对象调用,或者在System.out.print的时候被自动调用,为的就是给人更能理解的字符串说明。如果一个类没有实现这个方法,将默认按照Object类里面的定义,即
    "类全名@hashCode()"
      

  3.   

    从object继承的类就不是基本类型
    其他的都是基本类型,即int,float,boolean,char,double,long,byte
      

  4.   

    继承object的对象不是可以是任意类型的吗,也应该有那8个中的某一个吧