它们分别是,byte,short,int,long,这四种类型所占用的空间是不一样的java
byte是占用1个字节,它的取值范围是 -128~127,bash
short是占用2个字节,他的取值范围是-32768~32767,spa
int是占用4个字节,他的取值范围是-2147483648~2147483647,3d
long是占用8个字节,他的取值范围是-9223372036854775808-9223372036854775807code
咱们前两章说过内存就像房间,数据类型就像不一样的房间咱们能够将这四种类型当作四种不一样的房间,占用字节越多的房间就能住下越多的人cdn
例如 byte型变量blog
byte a = 12;
byte c = 12 , b=-13;复制代码
short型变量内存
short a = 156;
short c = 156,b = -213;复制代码
int型变量编译器
int a = 156;
int c = 156,b = -123;复制代码
long型变量,这里须要注意声明long类型变量须要在后面加上大写或者小写的 L 不然可能会形成精度丢失 it
long a = 123L;
long c = 123L,b = 25L;复制代码
由于在JAVA中整数是有默认类型的,这个默认类型是 int 型变量
好比这里有一个计算公式 123+456计算结果的值是int类型变量,
常见的错误,若是声明long类型并无给它加上L后缀是不会报错的,例如
long a=123456789 * 987654321;复制代码
这时就会变成JAVA中默认的数据类型 int 型 为何会这样我将会在后面为小伙伴们解释 然而这种声明方法是有问题的
这里咱们能够看出,计算的结果是不正确的,由于他并无加L 因此默认的值是int值,可是这个计算结果已经超出了int的取值范围,就会形成精度丢失,
加上L后缀后
这里咱们能够看出所计算的值是正确的,结果就是若是不给long类型的变量加上L后缀就会可能形成精度丢失,因此long类型赋值必须加上L后缀
10进制,也是咱们生活中经常使用的进制,也是java程序中经常使用的 咱们常见的例子都是使用10进制进行计算的,例如
int a = 33;复制代码
8进制,以0开头,在java编译器中将会解析成8进制数字,例如
int b = 033;复制代码
16进制,以0x或者0X开头,在java编译器中将会解析成16进制数字,例如
int c = 0x33;复制代码
下面就是三种进制赋值的效果
第一个是10进制33结果是33,第二个是8进制033结果是27,第三个是16进制0x33结果是51,这个就是不一样进制给不一样整型赋值的方法