java int 定义和long定义区别

问下 为什么会这样?

这个很容易理解啊。
首先先说一下,java不分你的机器是32位还是64位的,和平台无关(仅仅和java虚拟机相关)。
int是4个字节,long 是8个字节。
你问题中的a是long型,b是int型。在计算的时候a*a那么结果会是一个long型,b*b会是一个int型。如果是a*b会是一个long型。至于具体的转型关系我就不再多说了。计算结果不同是因为你计算的结果如果超过了指定类型的长度那么就舍弃,说白了就是取值范围溢出的处理。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-07-28
定义没什么区别,就是定义不同的类型而已啊

类型名称 字节数 取值范围
signed char 1 -128~+127
short
int 2 -32768~+32767
int 4 -2147438648~+2147438647
long
int 4 -2147438648~+2141438647
long long long
int 8 -9223372036854775808~+9223372036854775807
第2个回答  2014-03-13
简单的说int能存的数要比long小,小很多
第3个回答  2014-03-13
int 32 位的机器上是 4 个字节,表示范围是 -2^31 = -2 147 483 648 到 2^31 = 2 147 483 641

long 是8个字节
第4个回答  2014-03-13
因为位数不一样。
相似回答