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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

因为操作失误,将返回类型写成了double,变量设定的是int,但是编译通过了,详见代码,什么原理??
  1. class Rectangle implements AreaMethod
  2. {
  3.         private int len,wid;     //设定的变量类型为int
  4.         Rectangle(int len,int wid)
  5.         {       
  6.                 if (len<=0 || wid<=0)
  7.                 {
  8.                         throw new WrongException("出现非法值");
  9.                 }
  10.                 this.len = len;
  11.                 this.wid = wid;
  12.         }

  13.         public double getArea()  //误将返回类型写成了double,可是编译通过了。。。。。
  14.         {
  15.                 return len*wid;
  16.         }

  17. }

  18. class  Demo
  19. {
  20.         public static void main(String[] args)
  21.         {
  22.                 Rectangle r = new Rectangle(4,5);

  23.                 System.out.println(r.getArea());
  24.         }
  25. }
  26. [b][/b]
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

3 个回复

倒序浏览
len*wid得到的值为int型, int型值可以赋值给double型,原因是int型占四个字节,double型占八个字节, int型自动升级了

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
自动类型转换
回复 使用道具 举报
张波 发表于 2014-10-9 09:00
len*wid得到的值为int型, int型值可以赋值给double型,原因是int型占四个字节,double型占八个字节, int ...

:),理解了。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马