Java之基本数据类型(8种还是9种)-yellowcong
今天看了一下博客,发现有人说数据类型有9中, 一下子刷新了我的世界观,说好的8中基本数据类型,哪来的9种啊,后来发现 void 这孙子也是基本类型(PS:8种还是9种,都说法不一),《Think in Java》这本书上说是9 种,但是人家JAVA的api上说不是,你叫我跟你咋回答,心里只能说MMP了
基本数据类型
void是不是基本数据类型,那就看你心情了
数据类型 | 大小(字节) | 默认值 | 封装类 |
---|---|---|---|
byte | 1 | 0 | |
short | 2 | 0 | Short |
int | 4 | 0 | Integer |
long | 8 | 0l | Long |
float | 4 | 0.0f | Float |
double | 8 | 0.0d | Double |
char | 2 | null | Char |
boolean | 1/8 | false | Boolean |
void | – | – | Void |
比如说byte存储的数据长度吧,2^(1*8) -1 =255长度,为啥还要-1呢,因为我们算的都是二进制(1 0000 0000,2^(1*8) )的值,所以自然需要 -1得到1字节的长度。
因为 1byte 的数据长度是 1111 1111 ,折换成十进制 就是255了
基本类型和引用类型区别
一种是基本类型,一种是引用类型。两种的本质区别就是:基本类型是在堆栈处分配空间存“值”。但是引用类型,是在堆里面分配空间存“值”。Void是不能new出来,也就是不能在堆里面分配空间存对应的值。那就是一开始在堆栈处分配好空间了。所以,有些人将Void归成基本类型,也有道理。
在堆中创建的引用内存,不能随着调用结束就释放,需要等着GC来回收,而在栈内存中,随着引用调用完,就销毁了,所以栈内存中,引用了基本数据类型,效率高