java中长整型定义
System.out.println(x);
long y=0x100080000000;
System.out.println(y);
这样定义为什么不行
编译时候错误:
test.java:17: 过大的整数: 100080000000
long y=0x100080000000;
long不是64位吗,这样y应该才48位啊~~
还有0x8000,0000到底是多少
写成二进制不是应该
1000,0000,0000,0000,0000,0000,0000,0000
如果最高位算符号位的话,那不是变成0了???
-2147483648是怎么来的?
0x7fff,ffff是2147483647难道十六进制加了1换成十进制也加1在变符号? 展开
java整型有四种分贝是:byte(1字节)、short(2字节)、int(4字节)、long(8字节)
0x100080000000超出范围,其实不是long不能保存这么大,而是这个数是个int型数。它超出的其实是int的范围(The literal 0x100080000000 of type int is out of range),在整数赋值时。
可以将赋值语言修改如下,指定它的类型为long型就可以了 :
long y=0x100080000000l;//
扩展资料
java整形与长整型之间的转换可以借助Long类或字串
1、借助Long类:
int new_a = new Long(a).intValue();
2、借助字串:
int new_a = Integer.parseInt(String.valueOf(y));
java整形、长整型、浮点型 边界值:
int型边界最大值:Integer.MAX_VALUE
int型边界最小值:Integer.MIN_VALUE
long型边界最大值:Long.MAX_VALUE
long型边界最小值:Long.MIN_VALUE
float型边界最大值:Float.MAX_VALUE
float型边界最小值:Float.MIN_VALUE
0x100080000000 之所以超出范围,并不是long不能保存这么大,而是这个数是个int型数,所以当然超出了int范围(The literal 0x100080000000 of type int is out of range),在整数赋值时,右边默认都是int型,这时你将赋值语句修改为:
long y=0x100080000000l;//(最后一个是小写L)指定它的类型为long型就可以了
JVM资料:The JVM operand stack and local variables are defined to hold 32-bit values. So 64-bit long values that are stored on the operand stack or in local variables must be represented as two 32-bit entries.
意思是JVM 操作数栈及本地变量都定义成32位的值,所以存储在操作数栈或本地变量里的64位的long数值都必须被表示为两个32位的实体。
推荐于2017-09-07 · 知道合伙人互联网行家
Java的整型最大值/长整型和短整型最大值及表示法定义代码:
public class Damon
{
public static void main(String args[])
{
long long_max=java.lang.Long.MAX_VALUE;//得到长整型的最大值。
int int_max=java.lang.Integer.MAX_VALUE;//得到整型的最大值。
short short_max=Short.MAX_VALUE;//得到短整型的最大值。
byte byte_max=Byte.MAX_VALUE;//得到Byte型最大值。
System.out.println("LONG最大值:"+long_max);
System.out.println("INT最大值:"+int_max);
System.out.println("SHORT最大值:"+short_max);
System.out.println("BYTE最大值:"+byte_max);
}
}
代码定义后输出结果:
LONG最大值:9223372036854775807
INT最大值:2147483647
SHORT最大值:32767
BYTE最大值:127