A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© che201311 中级黑马   /  2013-12-8 19:58  /  1623 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. 我是初学者哈   
  2. public class Circle {
  3. double r;
  4. public Circle(double r)
  5. {
  6. this.r=r;
  7. }
  8. public String toString()
  9. {
  10. double area=r*r*Math.PI;
  11. return" "+area;
  12. }

  13. }
复制代码

返回一个值时为什么不能写  return area;   要加上" "+area?

4 个回复

倒序浏览
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+""
}

}

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

回复 使用道具 举报
  1. public String toString()//这里你定义的返回值类型为String
  2. {
  3. double area=r*r*Math.PI;//你定义的area为double类型
  4. return" "+area; //这里是返回值,返回值类型要与方法定义的返回值类型相同,而area为double不是String类型明显不同,任何类型数据+String类型(String类型+任何类型数据)的数据都变为String型数据,所以“”+area就变成String类型数据了,符合方法定义的数据类型了
  5. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!很详细

查看全部评分

回复 使用道具 举报
因为你定义了area是double类型,而toString()方法的返回值是String类型,所以直接返回area会出错;而写成""+area就不同了,因为"+"被重载了,它会把由"+"连接的值都转换为字符串然后拼接;""+area为String类型,符合方法定义的返回值类型;所以要加上""。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 鼓励新同学+1

查看全部评分

回复 使用道具 举报
因为double area=r*r*Math.PI计算出来的的area是double的,如果你在代码中写return area,函数的返回值类型写成String型,就造成了你要返回数据的类型和你定义的返回值的类型匹配不上,jvm肯定会编译错误,你加了 "“+area就是把area转成String。最格式的的修改方法可以是把toString()的返回值类型改成String。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马