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

2.1 数据类型介绍

当程序执行时,外界的数据进入计算机后,当然要有一个“栖身”之处,这时系统就会分配一个内存空间给这份数据。而在程序代码中,我们所定义的变量(Variable)与常数(Constant)的主要用途就是存储数据,并用于程序中的各种计算与处理。Java语言是一种强类型(Strongly Type)语言,意思是指:“变量在使用之前,必须声明其数据类型,我们可以任意存取这个变量的值,但是变量所声明的数据类型在程序中不可以随意变更。”

Java的数据类型可以分成“基本(Primitive)数据类型”与“引用(Reference)数据类型”。基本数据类型在声明时会先分配内存空间,目前Java共有byte、short、int、long、float、double、char和boolean八种基本数据类型。而引用数据类型则不会在声明时就分配内存空间,必须另外指定内存空间,也就是说,引用数据类型的变量值其实记录的是一个内存地址,这种类型的数据类型有数组、字符串。图2-2说明了基本数据类型中8种数据类型的分类关系。

图2-2

2.1.1 整数类型

整数类型用来存储不含小数点的数据,与数学上的意义相同,如-1、-2、-100、0、1、2、100等。整数类型分为byte(字节)、short(短整数)、int(整数)和long(长整数)4种,按数据类型的存储单位及数值表示的范围整理如表2-1所示。

表2-1

【范例程序:CH02_01】


01    // CH02_01.java,字节数据类型声明的实例
02    public class CH02_01 {
03        public static void main (String args[ ]) {
04            byte a=123;  // 声明字节数据类型并赋初值
05            byte b=1234;
06        }
07    }

【程序的编译结果】

程序的编译结果可参考图2-3。

图2-3

程序CH02_01经编译后,编译器提示程序中有一处错误,并说明是数据类型声明的错误,byte(字节)可表示的数值范围是-127~128,因而第05行导致编译失败,因为1234已经超出byte类型数值的范围,而第04行编译成功,因为123符合所规定的范围。我们可以把第05行程序修改为“short b=1234”,即采用short(短整数)数据类型,这样1234就包括在数据类型指定的范围内了。

2.1.2 浮点数类型

浮点数(Floating Point)就是带有小数点的数字,也就是我们在数学上所指的实数。由于程序设计语言普遍应用于许多科学的精密运算,因此整数所能表示的数值范围显然不足,这时浮点数就派上用场了。

浮点数的表示方法有两种,一种是小数点表示法;另一种是科学记数法表示法。例如,3.14和-100.521是小数点表示法,而6e-2和3.2E-18是科学记数法表示法。在科学记数法表示法中,其中的e或E代表以10为底数,例如6e-2,其中6被称为有效数值,-2被称为指数。表2-2所示为小数点表示法与科学记数法表示法的对照表。

表2-2

尤其是当需要进行小数基本四则运算时,或者数学运算上的开平方根( )与求三角函数的正弦、余弦等运算时,运算结果需要精确到小数点后几位,这时就会使用到浮点数类型。Java浮点数类型包含float(浮点数)和double(双精度浮点数),如表2-3所示。

表2-3

【范例程序:CH02_02】


01    // CH02_02.java,浮点数与双精度浮点数的声明
02    public class CH02_02 {
03        public static void main(String args[ ] ){
04            float a=12.5f;
05            double b=123456.654d;
06            System.out.println("a="+a);
07            System.out.println("b="+b);
08        }
09    }

【程序的执行结果】

程序的执行结果可参考图2-4。

图2-4

【程序的解析】

程序代码的第04行声明了一个名称为a的浮点数,它被赋予的初值为12.5f,该数值的后面多加了一个字母“f”作为float(浮点数)的标记,程序代码的第05行声明了一个名称为b的浮点数,它被赋予的初值是123456.654d,这个数值的后面多加了一个字母“d”作为double(双精度浮点数)的标记。数值后面的大写字母“F”和大写字母“D”与它们的小写字母表示的意思相同。通常在编写程序时,在浮点数后面有没有这样的标记并无太大的关系。

2.1.3 布尔类型

布尔(Boolean)类型的变量用于关系运算的判断或逻辑运算的结果,例如判断“5>3”是否成立,判断结果的布尔值只有true(真)和false(假)两种。

【范例程序:CH02_03】


01    // CH02_03.java,布尔值的声明与打印输出
02    public class CH02_03 {
03        public static void main(String args[]) {
04            boolean logic=true;  // 设置布尔变量的值为false
05            System.out.println("声明的布尔值="+logic);
06        }
07    }

【程序的执行结果】

程序的执行结果可参考图2-5。

图2-5

2.1.4 字符类型

在Java中,字符数据类型为char,它是一种使用16位(16-bit)二进制数所表示的Unicode字符。表2-4列出了char数据类型的存储单位及数据值表示的范围。

表2-4

在Java程序中,可以使用单引号将字符引起来,以此表示字符数据类型的值。大家要特别注意的是,字符数值是用单引号标注单个字符而不是使用双引号,这和字符串(例如"学无止境")以双引号标注是不一样的,例如字符变量的赋值方式:


char ch1='X';

另外,也可以用'\u十六进制数字'的方式来表示字符的值,\u表示Unicode码格式。不同的字符有不同的数据表示值,如字符@的数据表示值为'\u0040',字符A的数据表示值为'\u0041'。

【范例程序:CH02_04】


01    // CH02_04.java,字符数据类型声明的实例
02    public class CH02_04 {
03        public static void main(String args[ ]) {
04            char ch1='X';
05            char ch2='\u0058';  //Unicode编码的写法
06            System.out.println("ch1="+ch1);
07            System.out.println("ch2="+ch2);
08        }
09    }

【程序的执行结果】

程序的执行结果可参考图2-6。

图2-6

【程序的解析】

第04、05行:两种不同方式的字符数据类型写法,可以直接写字符'X',如果知道该字符的Unicode编码,也可以用字符对应的Unicode编码的十六进制数值来作为字符值。

另外,字符类型的数据中除了一般的字符外,还有一些特殊的字符无法使用键盘来输入或直接显示在屏幕上。这时必须在字符前加上反斜杠“\”来通知编译器将后面的字符当成一个特殊字符,就是所谓的转义序列字符(Escape Sequence Character),用于某些特殊的控制功能。例如,'\n'是表示换行功能的转义序列字符。有关各种转义序列字符与Unicode码之间的关系,请参考表2-5的说明。

表2-5 XPlzDWKwBo9WHQnce/2RdGZf1chb6lGUji6sKfP6sBISCYCcrXSYMuseKjJOaFMu

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