java中的整型数

整型数在java语言中共4种类型:

byte 1个字节(最大值127)

short 2个字节(最大值32367)

int 4个字节(2147483647是int最大值,超了这个范围可以使用long类型)

long 8个字节

1个字节=8个二进制位

1byte=8bit

在java语言中整数型字面量有4种表示形式:

十进制:int a=10;

二进制:int b=0b10;(二进制以0b开始)(JDK8的新特性)

八进制:int c=010;(八进制以0开始)

十六进制:int d=0x10;(十六进制以0x开始)

在java中有一条非常重要的结论,在任何情况下,整数型的字面量默认被当作int来处理,如果希望该整数型自变量被当中long类型来处理,需要在字面量后加L,因为小写l和1很像,容易分不清楚.

long a=100;

100这个自变量被默认当作int类型来处理,b是Long类型,占8个字节,int类型占4个字节,小容量可以自动转换位大容量,这种操作被称为:自动类型转换.

long b=300L;

上面的赋值不存在类型转换,在300后面添加一个L后,300L就是一个long类型的字面量,long赋给long不存在类型转换.

long d=2147483647;

2147483647默认被当作int来处理,d变量是long类型,小容量可以自动赋值给大容量,自动类型转换.

long e=2147483648;

int类型放不下2147483648,所有编译前会报错,e是long类型,完全放得下2147483648,只不过2147483648已经超过了int的范围.解决方法就是在字面量后面加上一个L,让它看出long类型,就解决问题了.

大容量不能直接赋值给小容量,需要使用强制类型转换符进行强制转换.加了强制类型转换符后,虽然编译通过了,但是运行时可能会损失精度.

底层进行强制类型转换:

long类型的100L:00000000 00000000 00000000 00000000 00000000 00000000 00000000 01100100;

以上的long类型100L强转为int类型,会自动将前面的4个字节砍掉:00000000 00000000 00000000 01100100;

java中有一个语法规则,当整数型字面量没有超出byte,或者short,char的取值范围,那么这个整数型字面量可以直接赋值给byte或者short,这种语法机制是为了方便写代码而存在的..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值