黑马程序员技术交流社区

标题: 搞不懂这个原理了……有谁明白? [打印本页]

作者: 向阳泪无痕    时间: 2013-11-18 21:39
标题: 搞不懂这个原理了……有谁明白?
为什么System.out.println(1/2);结果是0
作者: Misaeじ    时间: 2013-11-18 21:45
两个int类型的数相除,结果还应该是int类型的 ,只取前面的整数部分,所以是0
作者: ReFly    时间: 2013-11-18 21:57
本帖最后由 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











作者: 梦飞扬    时间: 2013-11-18 22:13
1与2都是int型的   两数相除结果也取整数  所以为0
作者: 乔_博_文    时间: 2013-11-18 22:23
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的道理一样的
作者: 菜不鸟    时间: 2013-11-18 23:47
"/"  这个就是除号.   由于  1/2  都是整数.  是整除所以默认结果会整数  0;
如果 你一开始这样声明的话 比如  double i=1.0;double b=2.0;System.out.pritln(i/b);    //这个时候结果就是等于0.5 了

作者: L_t    时间: 2013-11-19 15:36
整形与整形之间进行预算,结果自动取整
作者: L_t    时间: 2013-11-19 15:36
整形与整形之间进行预算,结果自动取整




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2