Java基础知识五:Java中的数据类型
数据类型是一个空间关键字,用于为数据分配足够的内存空间,换句话说,数据类型用于表示计算机主内存(RAM)中的数据。
通常,每种编程语言都包含三类数据类型。他们是
- 基本或原始数据类型
- 派生数据类型
- 用户定义的数据类型。
原始数据类型
原始数据类型的变量允许我们只存储一个值,但它们永远不允许我们存储多个相同类型的值。这是一种数据类型,其变量一次最多可以保存一个值。
int a ; //有效
a = 10 ; //有效
a = 10, 20, 30; //无效
这里“a”一次只存储一个值,因为它是原始类型变量。
派生数据类型
派生数据类型是那些变量允许我们存储多个相同类型值的数据类型。但是他们从不允许存储不同类型的多个值。这些是数据类型,其变量可以包含多个相似类型的值。一般来说,派生数据类型可以使用数组来实现。
int a[] = {10,20,30}; //有效
int b[] = {100, 'A', "ABC"}; //无效
这里派生数据类型一次只存储相同类型的数据,不能同时存储整数,字符和字符串。
用户定义的数据类型
用户定义的数据类型是程序员通过使用该语言的适当特征而开发的数据类型。
用户定义的数据类型相关变量允许我们存储相同类型或不同类型或两者的多个值。这是一个数据类型,其变量可以包含多个不同类型的值,在java中它是使用类概念实现的。
注意:在java中,派生的和用户定义的数据类型组合名称作为参考数据类型。
在C语言中,可以使用struct,union,enum等开发用户定义的数据类型。在java编程中,可以使用类和接口的特性开发用户定义的数据类型。
Student s = new Student();
在java中,我们有八种数据类型,它们分为四组。他们是
- 整数类别数据类型
- 字符类别数据类型
- 浮点类别数据类型
- 布尔类别数据类型
整数类别数据类型
这些类别数据类型用于通过分配足够的存储空间来将整数数据存储在计算机的主存储器中。
整数类别数据类型分为四种类型,如下表所示
Data Type | Size | Range | |
---|---|---|---|
1 | Byte | 1 | +127 to -128 |
2 | Short | 2 | +32767 to -32768 |
3 | Int | 4 | +x to - (x+1) |
4 | Long | 8 | + y to - (y+1) |
字符类别数据类型
字符是包含在单引号内的标识符。在java中表示字符数据,我们使用名为char的数据类型。此数据类型采用两个字节,因为它遵循Unicode字符集。
Data Type | Size | Range | |
---|---|---|---|
1 | Char | 2 | 232767 to -32768 |
为什么Java需要2个字节的内存用于存储字符?
Java支持超过18种国际语言,因此java占用2个字节的字符,因为对于18种国际语言,1字节的内存不足以存储18种语言中存在的所有字符和符号。Java支持Unicode但c支持ascii代码。在ascii代码中只存在英语,因此对于存储所有英语后者和符号1个字节就足够了。Unicode字符集包含18种国际语言中提供的所有字符,包含65536个字符
浮点类别数据类型
浮点类别数据类型用于表示浮点值。此类别包含两种数据类型,它们位于给定的表中
Data Type | Size | Range | Number of decimal places | |
---|---|---|---|---|
1 | Float | 4 | +2147483647 to -2147483648 | 8 |
2 | Double | 8 | + 9.223*1018 | 16 |
布尔类别数据类型
布尔类别数据类型用于表示或存储逻辑值为true或false。在java编程中表示布尔值或逻辑值,我们使用名为Boolean的数据类型。
为什么布尔数据类型占用零字节的内存?
布尔数据类型占用主存储器空间的零字节,因为Sun Micro System使用触发器概念实现了java的布尔数据类型。触发器是一个通用寄存器,存储一位信息(一个为真,零为假)。
注意:在C中,C ++(Turbo)布尔数据类型不可用于表示真假值,但真值可以视为非零值,而假值可以用零表示