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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 向阳泪无痕 高级黑马   /  2013-11-18 21:39  /  1593 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么System.out.println(1/2);结果是0

评分

参与人数 1黑马币 +6 收起 理由
FFF + 6 同学,基础要加强啊~~~一起努力吧!.

查看全部评分

8 个回复

倒序浏览
两个int类型的数相除,结果还应该是int类型的 ,只取前面的整数部分,所以是0

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 好像少了点什么```````

查看全部评分

回复 使用道具 举报
本帖最后由 ReFly 于 2013-11-18 22:14 编辑

1和2的默认类型是int 型,所以除了以后默认赋给int型。(以被除数为准,除后赋给被除数) 0.5赋给int,就是0。相当于(int)0.5。

值类型都有默认类型。1,2,3这种默认为int
普通小数默认为double



和下面一题同理:


3.下列代码的输出结果:(C)

System.out.println(10/3);

A.1

B.1.0

C.3

D.3.3333333333333335


"/" 并不是整除的意思, println()函数打印这个表达式,会看这个表达式最后所得到的默认类型。


下面例子:

double b=1/2;                    //                     "/" 运算符看被除数默认类型。

System.out.println(b);

结果是:0.0


System.out.println(1.0/2);

结果是0.5










评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
FFF + 1 + 3 很给力!带例子,有讲解,有分析。.

查看全部评分

回复 使用道具 举报
1与2都是int型的   两数相除结果也取整数  所以为0

点评

FFF
虽然鼓励新人~太这个回答也太简单了~下次不可以这么简单的回答了。要有例子,要有自己的想法与解释!  发表于 2013-11-18 22:16

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
1/2(1除以2)你可以这么理解:1里面有0个2,类似于6/3(6除以3)6里面有2个3。因为都是int型,所以1/2是0而不是0.0,    和6/3是2而不是2.0的道理一样的

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 鼓励性的+1~同学下次要带例子。回答要更详.

查看全部评分

回复 使用道具 举报
"/"  这个就是除号.   由于  1/2  都是整数.  是整除所以默认结果会整数  0;
如果 你一开始这样声明的话 比如  double i=1.0;double b=2.0;System.out.pritln(i/b);    //这个时候结果就是等于0.5 了

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 山寨,下次要带例子。回答要详细一些~不然~.

查看全部评分

回复 使用道具 举报
L_t 中级黑马 2013-11-19 15:36:03
7#
整形与整形之间进行预算,结果自动取整
回复 使用道具 举报
L_t 中级黑马 2013-11-19 15:36:25
8#
整形与整形之间进行预算,结果自动取整
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马