购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 数据类型

程序在执行的过程中,需要对数据进行运算,也需要存储数据。这些数据可能是由使用者输入的,也可能是从文件中取得的,甚至是由网络上得到的。在程序运行的过程中,这些数据通过变量存储在内存中,以便程序随时取用。

数据存储在内存的一块空间中,为了取得数据,必须知道这块内存空间的位置,为了方便使用,程序设计语言用变量名来代表该数据存储空间的位置。将数据指定给变量,就是将数据存储到对应的内存空间;调用变量,就是将对应的内存空间中的数据取出来使用。

一个变量代表一个内存空间,数据就存储在这个空间中,使用变量名来取得数据非常方便,然而由于数据在存储时所需要的内存容量各不相同,不同的数据就必须要分配不同大小的内存空间来存储,因此在Java语言中对不同的数据用不同的数据类型来区分。

在程序设计中,数据是程序的必要组成部分,也是程序处理的对象。不同的数据有不同的数据类型,不同的数据类型有不同的数据结构、不同的存储方式,并且参与的运算也不相同。通常计算机语言将数据按其性质进行分类,每一类称为一种数据类型(data type)。数据类型定义了数据的性质、取值范围、存储方式以及对数据所能进行的运算和操作。程序中的每一个数据都属于一种类型,定义了数据的类型也就相应决定了数据的性质以及对数据进行的操作,同时数据也受到类型的保护,确保对数据不进行非法操作。

Java语言中的数据类型分为两大类:一类是基本数据类型(primitive types);另一类是引用数据类型(reference types),简称引用类型。基本数据类型是由程序设计语言系统所定义、不可再分的数据类型。每种基本数据类型的数据所占内存的大小是固定的,与软硬件环境无关。基本数据类型在内存中存放的是数据值本身。引用数据类型在内存中存放的是指向该数据的地址,不是数据值本身,它往往由多个基本数据类型组成,因此,对引用数据类型的应用称为对象引用,引用数据类型也被称为复合数据类型,在有的程序设计语言中称为指针。

基本数据类型有整型、浮点型、逻辑型和字符型;引用数据类型包括类、数组和接口等。本节只介绍基本数据类型,引用数据类型在5.1节中再进行介绍。

Java语言的数据类型实际上都是用类实现的,即引用对象的使用方式,同时Java语言也提供了类似C语言中简单类型的使用方式,即声明类型的变量。

Java语言定义了4类共8种基本类型,其中有4种整型、2种浮点型、1种布尔型和1种字符型,它们的分类及关键字如下。

1. 整型

整数有正整数、零、负整数,其含义与数学中的含义相同。Java语言的整数有三种进制的表示形式。

Java语言定义了4种表示整数的类型:字节型(byte)、短整型(short)、整型(int)、长整型(long)。每种整型的数据都是带符号位的。Java语言的每种数据类型都对应—个默认的数值,使得这种数据类型变量的取值总是确定的,体现了其安全性。整型类型如表3.1所示。

表3.1 Java语言的整数类型

一个整数隐含为整型(int型)。当要将一个整数强制表示为长整数时,需在后面加字母l或L。所以若声明long型变量的值超过int型的取值范围时,如果数的后面不加l或L,系统会认是int型而出错。

2. 浮点型

Java语言用浮点型表示数学中的实数(浮点数),也就是既有整数部分又有小数部分的数。浮点数有两种表示方式。

浮点数用于需要小数位精确度高的计算。例如,计算平方根或三角函数等,都会产生浮点型的值。Java语言的浮点型有单精度浮点(float)和双精度浮点(double)两种,如表3.2所示。

表3.2 Java语言的浮点数类型

一个浮点数隐含为double型。若在一个浮点数后加字母f或F,将其强制转换为float型,所以若声明float型变量时如果数的后面不加f或F,系统会认为是double型而出错。double型占8字节,有效数字最长为15位,之所以称它为double型,是因为它的精度是float型精度的2倍,所以又称为双精度型。

3. 布尔型

布尔型(boolean)也称为逻辑型,用来表示逻辑值。它只有true和false两个取值。其中,true代表“真”,false代表“假”,true和false不能转换成数字表示形式。

所有关系运算(如a>b)的返回值都是逻辑型的值。逻辑型也用于控制语句中的条件表达式,如if、while、for等语句。

4. 字符型

字符型(char)用来存储单个字符。Java语言中的字符采用的是Unicode字符集编码方案,在内存中占2字节,是16位无符号的整数,一共有65 536个,字符的取值范围为0~65 535,表示其在Unicode字符集中的排序位置。Unicode字符是用“\u0000”到“\uFFFF”之间的十六进制数值来表示的,前缀“\u”表示是一个Unicode值,后面的4个十六进制值表示是哪个Unicode字符。Unicode字符表的前128个字符刚好是ASCII表。每个国家的字母表的字母都是Unicode表中的一个字符。由于Java语言的字符类型采用了Unicode这种新的国际标准编码方案,因而便于中文字符和西文字符的处理。因此,与其他语言相比,Java语言处理多语种的能力大大加强。

说明: (1)字符型数据的声明只能表示单个字符,且必须使用单引号将字符括上。

(2)Java语言中所有可见的ASCII字符都可以用单引号括起来成为字符,如'a'、'B'、'*'等。要想得到一个字符在Unicode字符集中的取值,必须强制转换成int类型,如(int)'a'。

(3)由于字符型用来表示Unicode编码中的字符,所以字符型数据可以转化为整数,其值为0~65 535。但要取得该取值范围的数所代表的Unicode表中相应位置上的字符,必须强制转换成char型,如“int c=20320;char s=(char)c;”。

现将Java语言的4类8种基本数据类型总结归纳成表3.3。

表3.3 Java语言的基本数据类型

为了使用上的方便,Java语言提供了数值型数据的最大值与最小值的标识符及常量值,如表3.4所示。

表3.4 数值型常量的特殊值代码

说明: 表3.4中表示浮点数float和double的最小值和最大值的常量分别为正数范围的最小值和最大值。若要取得负数范围的最小值或最大值,可用加负号的方法获得,如取得double型的最小负数可用如下语句:double min=—Double.MAX_VALUE。 hh5r81iESItATN+rkf9ncRiDppdVIw1cqvSwR6hcByPjTRcSRdgcVXIOV9eVfF9I

点击中间区域
呼出菜单
上一章
目录
下一章
×