为什么java中可以有: long a=0X123L; 这样的写法? 可以稍微深入一点哦!小弟刚出道,望多指教 谢谢你们!

如题所述

long a=1;是允许编译通过的。

long a = 0x123;
1、这个16进制数没啥好说的,支持各种数据赋值,这是必须的。
2、这个L的问题,=号右边的0x123默认是int类型。
当这个数值大于int类型的范围时,就会发生越界,那就意味着不能正确给a赋值。
后面加个L,就是告诉编译器这个数据是long型的,别再当成int类型的来处理。
3、在写程序时经常会出现Object的类型数据,通俗的说就是还不知道具体类型。
此时给它赋值就要明确给它int 还是 long,这是就需要用L,否则你在后面的
处理很有可能异常。(根据你后续的处理决定,大多数不会出现异常,只有对
类型要求很严格的时候才会出现)
4、实际中,你可以忽略这种用法,但要记住会出现问题,因为很多时候涉及不到
当数值不大就用int,很大就用long等等,定义合适的数据类型
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-13
0X或者0x开头表示这是一个16进制的数值。
L或者小写l 结尾表示这个数是一个长整型的数。
为什么要写上L呢?因为Java里整数默认是int型,如果你这么写:
long a=1;
是不能通过编译的,如果你使用IDE,会提示你不能将int转换成long型。因为附值符号“=”两边类型是要一致的。你声明a是long型,而常量 1 默认就是int型,因此是错误的。
这时候就必须显式的就常量1写成 1L或者1l,表示这个常量是long型。
相同的浮点数(小数)默认是double型,如果你要声明float型的,也必须加上F或者f
第2个回答  2010-12-13
0x123L 表示十六进制数,这个语句是给变量a赋值。
L表示长整型。

至于为什么,学习一下java的历史就很能明白为什了
第3个回答  2010-12-13
0X 表示 16进制数
Long a= 0X123L;
表示 16进制的 123 的长整型。
相似回答