数据类型初阶
一、概述
为什么需要有数据类型?
生活中的数据本来就是有类型的,只不过我们没有在意或者去深入研究。那么计算机语言就是去告诉计算机如何去解决现实问题,当然需要对等的概念去描述数据。
数据类型有什么作用?
(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两个数值,分别表示逻辑的真与假(布尔类型如果作为单个变量存储数据将占用 4 个字节,如果作为数组中的某个元素只占用 1 个字节)可以看出数值类型占了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 范围大
〔计算机存储数据分为三个空间:寄存器、栈空间、堆空间。
其中寄存器, Java 不能直接控制和处理,Java 能控制和处
理的是栈空间和堆空间。JVM 为每一个运行在内存中的Java
程序都分配相应的栈空间和堆空间〕
二、栈空间
1、栈空间存取数据的效率高。(仅次于寄存器)
2、栈中的数据按“先进先出”的方式管理。
3、栈空间存储空间较小,不能存放大量数据。
4、JVM将基本类型的数据存放在栈空间。
三、堆空间
1、堆空间存取数据的效率最低。
2、数据存放的位置随机分配。
3堆空间存储数据的空间大,能存放大容量的数据。(如:数组、字符串、对象、集合等)