其实 String a="aaa"; 这一句话,创建了一个对象,一个指向这个对象的引用(内存中药是没有aaa这个字符串时);
那么当调用a+="bbb";时候,a并不是字符串,它是一个对象,系统自动调用toString()方法,才让这句语句执行的,这就是String类中toString()方法的唯一作用,我说得对么??
那么当调用a+="bbb";时候,a并不是字符串,它是一个对象,系统自动调用toString()方法,才让这句语句执行的,这就是String类中toString()方法的唯一作用,我说得对么??
其实 String a="aaa"; 这一句话,创建了一个对象,一个指向这个对象的引用(内存中药是没有aaa这个字符串时);
那么当调用a+="bbb";时候,a并不是字符串,它是一个对象(或是一个引用,不知道,高人指点),系统自动调用toString()方法,把它变为字符串后才让这句语句没有错误的,这就是String类中toString()方法的唯一作用,我说得对么??
红字部分高人指点 啊!!
class Test
{}如果我们想在Console上输出这个对象,那么就应该重载toString方法,
那么代码就可以写为sysout(test);
大多数的语言都提供了这种东西的,
比如C#的ToString,JavaScript的toString, Ruby的to_s
toString() 返回此对象本身(它已经是一个字符串!)对于非String的类来说,toString()的作用是将任意类当作String来打印,当直接输出对象System.out.println(test)时,就会自动调用toString()
如果没有重载toString(),那么默认打印对象在内存中的地址。
不过说实在的,有点不太清楚LZ的问题重点,最好能重整一下自己的思路,好让大家能帮上忙
String中的toString()只是返回它自己而已,主要目的是重写Object类中的toString()方法.
可以再问俩个问题么??1。什么时候需要重载toString()方法呢?? 2。aa.toString()这就算重载了么?? 重载不是参数类型或个数不一样,而且在同一个类内,才算重载么?
例如
public Point{
int x;
int y;
public String toString(){
return "x="+x+";y="+y;
}
}
这样就可以将坐标打印,存储呀
例如
public Point{
int x;
int y;
public String toString(){
return "x="+x+";y="+y;
}
}
这样就可以将坐标打印,存储呀 楼上这个例子说明的太好了
之所以不是以接口方式实现这个方法在于,对于其他大部分的类,这样的一个方法在overwrite以后,对对象而言还是很好用的.权衡下来.放在抽象类中还是比较合算的,会比需要的时候再实现toString接口要方便(当然我们这里是因为需要实现这个功能的类比较多).当然这样似乎有些强词夺理,如果你依然不能理解的话...你可以去参考API