首页 理论教育 Java程序设计:基本数据类型

Java程序设计:基本数据类型

时间:2023-11-01 理论教育 版权反馈
【摘要】:Java基本数据类型所占空间、范围及默认值如表2-1所示。表2-1基本数据类型的空间、范围及默认值注意:Java默认初始化只对Java成员变量有效,当作为局部变量使用时,是没有默认值的,使用之前需要进行初始化赋值,否则编译时会报错。整数型和浮点型的取值范围,可以通过各基本数据类型的包装类所提供的成员属性来获取。图2-2数值型各变量取值范围注意:Java中可以用MAX-VALUE这个字段来输出保存float类型/double类型的最大正有限值的常量。

Java程序设计:基本数据类型

Java基本数据类型所占空间、范围及默认值如表2-1所示。

表2-1 基本数据类型的空间、范围及默认值

注意:

Java默认初始化只对Java成员变量(成员属性)有效,当作为局部变量使用时,是没有默认值的,使用之前需要进行初始化赋值,否则编译时会报错。

整数型和浮点型的取值范围,可以通过各基本数据类型的包装类所提供的成员属性来获取。

【例2-1】

演示获取数值型变量的取值范围。

数值型包括整数型和浮点型,获取其取值范围的方法如图2-2所示。

图2-2 数值型各变量取值范围

注意:

Java中可以用MAX-VALUE这个字段来输出保存float类型/double类型的最大正有限值的常量。同样,用MIN-VALUE保存float类型/double类型数据的最小正非零值的常量。

1.整数型

整数型数据用来存储没有小数部分的数值,被细分为4种子类型,区别在于所占用的内存空间和取值范围的不同。一个整数型常量值的默认类型是int型,若要表示一个整数为long型的常量值,则要在值后加字母L或l,推荐使用大写字母L,小写字母l容易和数字1混淆,例如,整数型常量值25表示int类型常量25,而整数型常量值25L表示long类型常量25。

Java中针对整数型常量值提供了四种表现形式:

(1)二进制数:由0,1数字组成,以0b或者0B开头。例如:0b00011001。

(2)八进制数:由0~7之间的数字组成,以0开头。例如:031。

(3)十进制数:由0~9之间的数字组成,不能以0开头。整数类型常量值默认是十进制。例如:25。

(4)十六进制数:由0~9,a~f或A~F组成,以0x或者0X开头。例如:0x19。

2.浮点型

浮点型的变量用来存储小数数值,进一步可以细分为float型和double型。float型又称作单精度浮点数,尾数可以精确到7位有效数字,在很多情况下,float型的数值精度很难满足需求;而double型又称作双精度浮点数,数值精度约是float型的两倍,为绝大多数程序采用。

目前,应用最广泛的浮点数格式是IEEE 754标准。采用IEEE 754浮点数计数标准,在内存中按科学计数法存储,只要给出符号(S)、阶码(E)、尾数(M)三部分,就能确定一个浮点数。float型和double型这两种浮点数在内存中的存储结构如图2-3所示。

图2-3 float型和double型格式

浮点数的精度是由尾数的位数来决定的:对于float型浮点数,尾数部分23位,换算成十进制为223=8388608,一共7位,这意味着尾数可以精确到7位有效数字;对于double型浮点数,尾数部分52位,换算成十进制为252=4503599627370496,一共16位,这意味着尾数可以精确到16位有效数字。

在Java中,浮点型常量默认类型是double型,也可以在数值后加字母d或D明确表示其为double型。但是,如果要表示一个float型的浮点型常量值,则必须在值后加字母F或f。例如,小数0.25或0.25d都表示double型常量值,占用8个字节,而0.25F则表示一个float型常量值,占4个字节。

注意:

由于浮点数的计算精度问题,float型和double型不适合用于不容许舍入误差的金融领域

例如,Java中“System.out.println(0.09+0.01);”,显示的结果为0.09999999999999999,而并非0.1。这在金融计算中是不可接受的,此时,需要使用JDK提供的java.math.Big Decimal类或者采用专门的工具类。

3.字符

计算机要准确地处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。不同的字符编码表能识别特定的字符集,各有自己特定的编码规则,下面简单介绍几种常用的字符编码:

(1)ASCII(American standard code for information interchange)。

ASCII字符集主要包括控制字符回车键、退格、换行键等)和可显示字符(英文大小写字符、阿拉伯数字和西文符号)。ASCII编码就是将ASCII字符集转换为计算机可以接受的数字系统的数的规则。标准ASCII编码使用7位(bits)表示一个字符,共128个字符。

(2)ISO-8859-1。

ISO-8859-1字符集又称为ISO拉丁字母表。收录的字符除ASCII收录的字符外,还包括西欧语言希腊语泰语、阿拉伯语、希伯来语对应的文字符号。ISO-8859-1编码用一个字节的8位来表示一个字符。

(3)GBK。

GBK即“国标”“扩展”汉语拼音的第一个字母,GBK全称为《汉字内码扩展规范》。GBK编码兼容GB 2312编码,融合了更多的中文文字符号。每个英文占一个字节,中文占2个字节。(www.xing528.com)

(4)Unicode。

Unicode(统一码)为国际标准码,融合了目前人类使用的所有字符,为每个字符分配唯一的字符码。目前实际应用的Unicode(统一码)版本对应于UCS-2(universal character set coded in 2 octets),用两个字节来表示,最多可表示65536个字符,已基本满足各语言的使用。

(5)UTF-8。

UTF(unicode transformation format)是Unicode的转换格式。UTF-8编码采用变长编码方式,根据不同的Unicode字符使用1~4个变化字节表示,目的是有效节省空间。UTF-8使用单字节兼容ASCII码,而使用3个字节表示大多数汉字,例如字符“严”的Unicode值为\u4E25,其UTF-8编码为E4B8A5。

下面通过Windows自带的记事本来创建一个UTF-8编码格式的文本文件。步骤为:点击鼠标右键,新建一个文本文件,鼠标双击后打开该文本文件,在菜单栏【文件】上选择【另存为】,修改文件名为“UTF-8.txt”,同时选择编码为“UTF-8”,如图2-4所示。

图2-4 选择字符编码方式

此时,查看文本文件UTF-8.txt的属性,发现空白文件的大小为3个字节,如图2-5所示。

图2-5 查看UTF-8.txt的大小属性

注意:

常用的文本编辑软件对UTF-8文件保存的支持方式并不一样,分为“不带BOM的UTF-8”和“带BOM的UTF-8”,区别就在于文件开头有没有字节序标记BOM(byte order mark),Unicode字符编码为\uFEFF,对应的UTF-8编码为EFBBBF。例如,当Windows记事本另存为一个UTF-8编码的文件时,记事本程序会在文件开始处插入不可见的BOM,因此空白UTF-8.txt文件的大小为3个字节。而UltraEdit软件则支持“UTF-8”和“UTF-8-无BOM”两种选择。

为使开发的应用具有更好的国际化支持,Eclipse开发中文本文件最好使用UTF-8编码。而Windows 7平台默认编码格式为GBK,因此,在Eclipse工作空间中建立的所有项目文本文件的编码默认是GBK,这里,修改Eclipse工作空间的默认编码为UTF-8,方法如下:

启动Eclipse,选择菜单栏中【Window】下的【Preferences】选项,在弹出的对话框中选择【General】项,再选择【Workspace】项,在右边“Text file encoding”中可以看到默认编码是GBK,选中Other单选框,在下拉框中选择“UTF-8”,点击【OK】按钮完成修改,如图2-6所示。

图2-6 修改Eclipse工作空间的编码

修改后,该工作空间下的所有项目均采用UTF-8编码。如果接收到的其他项目采用其他编码(如GBK),那么最好另建一个工作空间,即建议修改编码以工作空间为单位,而不是在单个项目上修改,避免同一工作空间下各项目出现不同编码。

Java的字符型数据用来表示通常意义上的“字符”(包括中文字符等),Java字符为char类型,在内存中采用Unicode编码,每个char类型字符占两个字节,可用\u0000到\u FFFF的十六进制编码表示,例如,\u0000表示Unicode字符集里的空白字符。

char类型字符常量可以用一对英文半角格式的单引号把单个字符括起来表示,如a、林等;也可以使用0~65535范围内的整数表示,在将整数值赋值给char类型变量时,计算机会自动将其转化为对应的字符。

【例2-2】

演示字符常量的表示方式。

字符常量通常有以下三种表示方法,如图2-7所示。

图2-7 字符常量的三种表示方式

注意:

在Unicode编码中,大写字母的编码值范围为65~90,小写字母的编码值范围为97~122,大写字母和小写字母编码值相差32。

在字符常量中,为了表示一个不能显示的字符或者表示具有特殊含义的字符,需要借助特殊字符——反斜杠(\)。反斜杠被称为转义字符,用来转义后面的一个字符。常用的转义字符举例如下:

(1)\n:换行符,表示换到下一行的开头,Unicode值为\u000a。

(2)\r:回车符,表示定位到当前行的开头,Unicode值为\u000d。

(3)\t:制表符(Tab),将光标移动到下一个制表符的位置,Unicode值为\u0009。

(4)\":双引号,Java中双引号表示字符串的开始和结束,如果字符串中本身有双引号,需要使用转义符号,Unicode值为\u0022。

(5)\:单引号,Java中单引号表示字符的开始和结束,如果字符串中本身有单引号,需要使用转义符号,Unicode值为\u0027。

(6)\\:反斜杠,如果需要表示字符反斜杠(\),需要用双反斜杠(\\)来表示,前一个反斜杠表示转义字符,Unicode值为\u005c。

4.布尔型

布尔型变量用来存储布尔值,只有true和false两个值。布尔型变量适用于逻辑运算,一般用于程序流程控制。

注意:

Java定义的8种基本数据类型中,除了boolean类型,其他7种类型都定义了明确的内存占用字节数。这是因为,对于Java虚拟机来说,根本不存在boolean这个类型,boolean类型在编译后会使用其他数据类型表示,具体取决于虚拟机的实现。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈