1、基本数据类型(primitive data type) 最基础的数据类型 八种
整数型 byte short int long
浮点型 float double 小数
字符型 char
布尔型 boolean true false 做逻辑判断
2、引用数据类型(reference data type)类 抽象类 接口 枚举 …. …
byte short int long
各自的范围:
类型 |
占用存储空间 |
表数范围 |
byte |
1字节 |
-27 ~ 27-1(-128~127) |
short |
2字节 |
-215 ~ 215-1 (-32768~32767) |
int |
4字节 |
-231 ~ 231-1 (-2147483648~2147483647) 约21亿 |
long |
8字节 |
-263 ~ 263-1 |
十进制整数,如:99, -500, 0
八进制整数,要求以 0 开头,如:015
十六进制数,要求 0x 或 0X 开头,如:0x15
二进制:要求0b或者0B开头,如:0b11
Q1:这四个整数类型有什么区别吗?
我们先来定义四个不同整数类型的变量,然后输出,可以看到:
public class Test5{
public static void main(String[] args){
byte b=10;
short c=10;
int i=10;
long l=10;
System.out.println(b);
System.out.println(c);
System.out.println(i);
System.out.println(l);
}
}
我们可以看到,输出结果都是10,并没有什么区别啊?
我们现在将变量b的值改为“ -129 ”:
开始报错了!
我们来看一下各个整数类型的范围吧:
byte 字节型整数。电脑存储数据,并不是用无限位的二进制来表现的,一定是有限制的。
1字节 8位 存储一个整数 00000000 ~ 11111111 一共能存储2 ^ 8 = 256个数字
256个数字,正负数区分一下,它的范围就是:
- 128(2^7)~ 127(2^7 -1)
如果存储数据超过这个范围,就存不了啦!
short 短整型整数。
2字节 16位 存储一个整数 一共能存储2 ^ 16= 65536个数字
- 32768(2^15)~ 32767 (2^15 -1)
int 整数型整数。
4字节 32位 存储一个整数 一共能存储2 ^ 32= 4294967296个数字
- 2,147,483,648(2^31)~ 2,147,483,647 (2^31 -1)
默认存储整数常量的类型。
long 长整型整数。
8字节 64位 存储一个整数 一共能存储2 ^ 64= 18446744073709551616个数字
- 9223372036854775808(2^63)~ 9223372036854775807 (2^63 -1)
上面报错的原因,也就是赋的值超出了byte的范围。
Q2:为什么要有这么多数据类型?
我们在完成同样一个计算功能的时候,程序所占用的内存越少越好。
在底层转码的时候,可能会用到byte和short,正常情况下,我们用int就可以啦。
Q3:计算机默认存储整数常量的类型是int,那我们存储数据过大时,如何告诉计算机我们存储的是long类型呢?
我们先来看看,在long类型存储范围内,咱们存储一个较大的数字:
编译器报错:过大的整数!
不是说long类型过大,而是说数字过大了。
默认存储整数常量的类型是int类型。
但此时int已经装不下这个数字了,我们就要告诉计算机这么大的数据,要用long类型来存储!
如何告诉计算机呢? 在数字后面写一个L,大写小写均可。(推荐大写L,小写和数字1太像了)
我们来看一看:
Q4:如果在创建整数变量的时候。想用二进制或者八进制、十六进制来写,分别如何去写呢?
public class Test6{
public static void main(String[] args){
//十进制整数,如:99, -500, 0
int a=99;
//八进制整数,要求以 0 开头,如:015((八进制))-->5*(8^0)+1*(8^1)=13(十进制)
int b=015; //直接写15的话,会被当做十进制的15。
//以0开头的话,是告诉Java,这个15是一个八进制的15,即13。
//十六进制数,要求 0x 或 0X 开头,如:0x15(十六进制)-->5*(16^0)+1*(16^1)=21(十进制)
int c=0x15; //以0x开头的话,是告诉Java,这个15是一个十六进制的15,即21。
//二进制:要求0b或者0B开头,如:0b11(二进制)-->1*(2^0)+1*(2^1)=3 (十进制)
int d=0b11; //以0b开头的话,是告诉Java,这个15是一个二进制的11,即3。
//输出时还是以十进制的值输出!
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
}
我们可以看一下输出结果: