为什么需要有数据类型?
生活中的数据本来就是有类型的,只不过我们没有在意或者去深入研究。那么计算机语言就是去告诉计算机如何去解决现实问题,当然需要对等的概念去描述数据。
数据类型有啥作用?
(1)决定了每个数据存储时所需要的字节数,字节有8个二进制的0或1构成。
(2)决定了数据所能执行的运算。
八大基本数据类型包括:整数类型(byte,short,int,long),浮点类型(float,double),字符类型(char),布尔类型(boolean),其实还有其它三个数据类型,类(class),数组类型,接口类型(interface),这里就不做详细介绍了。
整数类型:
整数只储存整数数值,可细分为短整型(short,占2个字节)、整数(int,占4个字节)与长整型(long,占8个字节)。长整型所占的内存比整数得多,可表示的范围也比较大,同时,整数可表示的整数数值范围也比短整型的大。
字节类型:
Java提供有字节(byte)数据类型,可专门储存字节型数据,如影像的字节型数据。一个字节型数据类型占一个字节,有必要的话,byte数据类型也可以存储一定范围的整数数值整数。
浮点类型:
浮点类型主要用来储存小数数值的,也可以用来储存范围更大的整数,可分为单精度浮点数(float,占4个字节)和双精度浮点数(double,占8个字节)。双精度浮点数所使用的内存空间比单精度浮点数的多,可表示的数值范围与精确度也比较大。需要注意的是,对于如1.0、0.999这样的数据,java语言默认的都是double类型的,他们的float类型为1.0f、0.999f,即float在定义值的时候一定要在初始值后面加f。
字符类型:
用来储存字符。Java的字符采用Unicode编码,其中前128个字符编码与ASCII编码兼容。每个字符数据类型占2个字符,可储存的字符范围从\u0000到\uFFFF,由于java的字符采用Unicode编码,一个中文字与一个英文字母在java中同样都是用一个字符来表示,如‘a’、‘好’。
常见的转义字符
功能 | 字符形式 | 功能 | 字符形式 |
回车 | \r | 单引号 | \’ |
换行 | \n | 双引号 | \” |
垂直制表 | \v | 响铃 | \a |
水平制表 | \t | 反斜线 | \\ |
退格 | \b | 换页 | \f |
空字符 | \0 |
|
|
布尔类型:
布尔数占内存一个字节,可储存true与false两个数值,分别表示逻辑的真与假
可以看出数值类型占了8种简单数据类型中的6种,之所以分这么细,是为了表示数值的不同大小区间。数据类型所占空间如表所示
数据类型 | 占用空间/字节 | 数值范围(e表示科学计数法) |
byte | 1 | 127~-128 |
short | 2 | 32 767~-32 768 |
int | 4 | 2 147 483 647~-2 147 483 648 |
long | 8 | 9 223 372 036 854 775 807~-9 223 372 036 854 775 808 |
float | 4 | 3.402 823e + 38~1.401 298e-45 |
double | 8 | 1.797 693e + 308~4.900 000e-324 |
浮点数所取的是正数的最大与最小的范围,加上负号即为负数可表示的最大与最小范围。
浮点类型的数据的存储方式和整数不一样,所表示的数据范围要比整数的最大范围大。
因为各种数据类型所占的内存大小不同,因而可以储存的数值范围也就不同。如果储存值超过这个范围,则称为“溢出”,这样会造成程序不可预期的结果。对于java语言提供的8种原始数据类型,根据数据表示范围的大小可以排列如下(不包括boolean):
范围小 byte—short—char—int—long—float—double 范围大