数据类型的基本概念
计算机存储单元换算
计算机存储设备的最小信息单元:bit(比特)
计算机存储设备的最小存储单元:byte(字节)用B表示
换算:
1B=8bit
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
什么是数据类型
数据类型是指一组性质相同的值的集合及定义在此集合上的一些操作的总称
根据数据类型的存储方式可分为:
-
原始类型(也叫基本类型):整型、字符型、浮点型、布尔型;8种基本数据类型
-
引用类型:数组、类类型、接口类型
根据数据类型的结构可分为:
-
原子类型:是不可以再分解的基本类型,包括整型、字符型、浮点型、布尔型
-
结构类型:由若干类型组合而成,可以再分解,最终分解为原子类型,包括所有引用类型
原始类型对应存在原始值;引用类型对应存在引用值
基本数据类型
基本数据类型是在编译期间就会检查的数据类型,包含四个大类:整型、字符型、浮点型以及布尔型
1. 整型
分类 | 字节数 | 数据范围(闭空间) | 数据范围(科学计数法) | 默认值 |
---|---|---|---|---|
byte | 1 | -128~127 | −27~27 | 0 |
short | 2 | -32768~32767 | −215~215 | 0 |
int | 4 | -2147483648~2147483647 | −231~231 | 0 |
long | 8 | -9223372036854775808~9223372036854775807 | −263~263 | 0 |
注:所有数字的常量值类型都会默认为int类型,int向下转型
2. 字符型
字符型是特殊的整型
分类 | 字节数 | 数据范围 | 默认值 |
---|---|---|---|
char | 2 | 0~65535 | \u0000 |
这里的默认值是Unicode的null码点
3. 浮点型
分类 | 字节数 | 数据范围 | 默认值 |
---|---|---|---|
float | 4 | -3.403E38~3.403E38 | 0.0 |
double | 8 | -1.798E308~1.798E308 | 0.0 |
浮点数精度说明:
-
浮点类型在概念上与IEEE754标准中定义的32位单精度和64位双精度格式的取值与操作是一致的。
-
浮点数不仅包括正负的带符号量,还包括正负0、正负无穷大(Infinity)和特殊是的非数字标识:NaN(Not-a-Number)
-
虚拟机必须支持两种标准的浮点值集合:单精度浮点数集合和双精度浮点数集合
-
虚拟机选择性实现可以自由选择是否要支持两种扩展指数集合:单精度扩展指数集合和双精度扩展指数集合
-
扩展指数集合可以选择一种或全部,在特定的情境下可以代替标准浮点数集合
-
除了NAN是无序的,浮点数集合中的所有元素都是有序的,从小到大的顺序如下:负无穷<可数负数<正负0<可数正数<正无穷
4. 布尔型
分类 | 字节数 | 数据范围 | 默认值 |
---|---|---|---|
boolean | 1 | true/false | false |
boolean类型也是特殊的整数
因为在Java虚拟机中没有任何供boolean值专用的字节码指令,boolean数据类型在编译后都会转换成int数据
boolean类型的数组访问与修改共用byte类型数组的指令
引用数据类型
在栈中存放引用(句柄)地址,指向堆空间中动态创建的实例对象,引用类型的数据将会在运行期进行检查类型
在引用类型中还有一个特殊的默认值null,当引用值不指向任何一个堆内存中的对象,则表示为null。 一个为null的引用并不具备任何运行期类型,null可以转换为任意类型,在Java虚拟机中并没有任何对于null的定义和描述。
1. 类类型
使用class修饰的类,当创建该对象
People p=new People()
,p就是类类型的引用数据,由p这个引用类型参数,调用实际存在于堆空间中的具体对象数据
2. 数组类型
- 数据类型最外面的一维元素的类型,叫做该数组类型的组件类型。一个组件类型也可以是数组。
- 一个数组的组件一般也是一个数组,直到不可继续拆解,内部的数据就称之为元素(俄罗斯套娃)
数组的元素类型必须是原生类型、类类型和接口类型之一(数组类型也可以,但是不称为元素类型,而是称为组件类型)。
-
数组类型
-
int[][][]
三维数组,int[][]
是其组件类型,int[]
也是其组件类型 -
低次维是数组则是组件类型,如果不是数组,这种类型是该数组的元素类型
-
数组的元素类型必须是原生类型,类类型或者接口类型之一
-
3. 接口类型
接口类型引用指向类的实例。
其他隐藏类型
1. returnAddress类型(指针)
returnAddress类型的数据不同于原生类型和引用类型,该类型在Java语言中并不存在相应的类型,而且也无法在程序运行期间更改,returnAddress的值是指向一条虚拟机指令的操作码,在Java虚拟机中被jsr、ret和jsr_w指令所使用。
2. void类型
标签:int,数据类型,集合,引用,数组,类型 From: https://www.cnblogs.com/caihuaxin/p/17679995.html在Java中,对于方法的返回值也是有一种类型,void表示空,这种类型无法进行操作,也不属于是原生类型和引用类型,而是方法的返回类型