黑马程序员技术交流社区
标题:
关于JAVA toString 方法的重写
[打印本页]
作者:
che201311
时间:
2013-12-8 19:58
标题:
关于JAVA toString 方法的重写
我是初学者哈
public class Circle {
double r;
public Circle(double r)
{
this.r=r;
}
public String toString()
{
double area=r*r*Math.PI;
return" "+area;
}
}
复制代码
返回一个值时为什么不能写 return area; 要加上" "+area?
作者:
赵青超
时间:
2013-12-8 20:01
public class Circle {
double r;
public Circle(double r)
{
this.r=r;
}
public
String
toString() //
看这里,返回值是String
{
double
area=r*r*Math.PI;
//看这里,area是double类型
return" "+area; //返回值是String类型," "+area就是把area转成String,也可以这样写:area+""
}
}
作者:
lichao
时间:
2013-12-8 20:19
public String toString()//这里你定义的返回值类型为String
{
double area=r*r*Math.PI;//你定义的area为double类型
return" "+area; //这里是返回值,返回值类型要与方法定义的返回值类型相同,而area为double不是String类型明显不同,任何类型数据+String类型(String类型+任何类型数据)的数据都变为String型数据,所以“”+area就变成String类型数据了,符合方法定义的数据类型了
}
复制代码
作者:
time_out
时间:
2013-12-8 20:30
因为你定义了area是double类型,而toString()方法的返回值是String类型,所以直接返回area会出错;而写成""+area就不同了,因为"+"被重载了,它会把由"+"连接的值都转换为字符串然后拼接;""+area为String类型,符合方法定义的返回值类型;所以要加上""。
作者:
李然
时间:
2013-12-9 15:37
因为double area=r*r*Math.PI计算出来的的area是double的,如果你在代码中写return area,函数的返回值类型写成String型,就造成了你要返回数据的类型和你定义的返回值的类型匹配不上,jvm肯定会编译错误,你加了 "“+area就是把area转成String。最格式的的修改方法可以是把toString()的返回值类型改成String。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2