JAVA语言中,表示整数类型的byte、short、int、long四个类型赋值问题。

Python018

JAVA语言中,表示整数类型的byte、short、int、long四个类型赋值问题。,第1张

byte n=26

long n =26

这样赋值是对的,但是你说的“用Long赋值”这句话不对。

首先Long是一个对象,在jdk1.5之前Long对象不能赋值给long基本类型

在者long赋值给int、short、或者byte,若超过改三个数的最大值时,会溢出。

最后26是字面常量,字面常量没有数据类型这一说法,只有变量有数据类型。

正确的写法

long a=10000000000L //将10000000000 这个整数常量,声明为long类型。

报错原因是:Java中整数类型的值默认成int类型,占4个字节,能表示的最大值是2的31次方减一,约2乘十的九次方。10 000 000 000不带L时,会被默认成int类型,但这个值远远超过int类型能表示的最大值,于是报错。

long类型占八个字节,能表示的最大值为2的63次方减一,约为9 乘十的十八次方,能表示的最小值是-2的63次方。10000000000这个值处在long类型的表示范围内,所以声明成一个long类型常量10000000000L不会出错。将long类型常量赋值给long类型变量,不存在数据类型转换的类型不兼容问题。

我详细说说吧java中直接输入整数则默认为int类型,带有小数点的实数默认为double类型如果你直接声明 long a = 123;这是没有错的,因为123是int类型,可以赋值给范围更大的long类型,但是如果你的数字超过int范围那得告诉编译器,你的数字已经大于int范围,要换成更大范围的long类型表示,所以数字后面加上L(或小写l)。比如 long a = 2147483648(这样写会报错,因为int类型最大表示范围是2147483647) 得这样 long a = 2147483648L 浮点数一样,后面加的是F/f (代表float类型)