《第 2 章 数据类型.doc》由会员分享,可在线阅读,更多相关《第 2 章 数据类型.doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 2 章 数 据 类 型2.1数据类型 数据类型指明了变量或表达式的状态和行为。Java的数据类型如下所示: Java不支持C、C+中的指针类型、结构体类型和共用体类型。本章我们主要介绍简单类型。2.2常量与变量 1、常量 Java中的常量值是用文字串表示的,它区分为不同的类型,如整型常量123,实型常量1.23,字符常量a,布尔常量true、false以及字符串常量Thisisaconstantstring.。与C、C+不同,Java中不能通过#define命令把一个标识符定义为常量,而是用关键字final来实现,如finaldoublePI=3.14159(有关final的用法见6.2.
2、3)。 2、变量 变量是Java程序中的基本存储单元,它的定义包括变量名、变量类型和作用域几个部分。变量名是一个合法的标识符,它是字母、数字、下划线或美元符的序列,Java对变量名区分大小写,变量名不能以数字开头,而且不能为保留字。合法的变量名如:myName、 value-1、dollar等。非法的变量名如:2mail、room#、class(保留字)等,变量名应具有一定的含义,以增加程序的可读性。 变量类型可以为上面所说的任意一种数据类型。 变量的作用域指明可访问该变量的一段代码。声明一个变量的同时也就指明了变量的作用域。按作用域来分,变量可以有下面几种:局部变量、类变量、方法参数、例外处
3、理参数。局部变量在方法或方法的一块代码中声明,它的作用域 为它所在的代码块(整个方法或方法中的某块代码)。 类变量在类中声明,而不是在类的某个方法中声明,它的作用域是整个类。方法参数传递给方法,它的作用域就是这个方法。例外处理参数传递给例外处理代码,它的作用域就是例外处理部分。 在一个确定的域中,变量名应该是唯一的。通常一个域用大括号来划定。 有关类变量、参数传递以及例外处理将分别在6.7.1、6.2.4和第八章中讲述。 变量的声明格式为: typeidentifier=value,identifier=value; 例如:inta,b,c; doubled1,d2=0.0; 其中,多个变量间
4、用逗号隔开,d2=0.0对实型变量d2赋初值 0.0,只有局部变量和类变量是可以这样赋初值的,而方法参数和例外处理参数的变量值是由调用者给出的。 2.3整型数据 1、整型常量: 与C,C+相同,Java的整常数有三种形式: 十进制整数,如123,-456,0 八进制整数,以0开头,如0123表示十进制数83,-011表示十进制数-9。 十六进制整数,以0x或0X开头,如0x123表示十进制数291,-0X12表示十进制数-18。 整型常量在机器中占32位,具有int型的值,对于long型值,则要在数字后加L或l,如123L表示一个长整数,它在机器中占64位。 2、整型变量: 整型变量的类型有b
5、yte、short、int、long四种。下表列出各类型所在内存的位数和其表示范围。int类型是最常使用的一种整数类型。它所表示的数据范围足够大,而且适合于32位、64位处理器。但对于大型计算,常会遇到很大的整数,超出int类型所表示的范围,这时要使用long类型。由于不同的机器对于多字节数据的存储方式不同,可能是从低字节向高字节存储,也 可能是从高字节向低字节存储,这样在分析网络协议或文件格式时,为了解决不同机器上的字节存储顺序问题,用byte类型来表示数据是合适的。而通常情况下,由于其表示的数据 范围很小,容易造成溢出,应避免使用。 short类型则很少使用,它限制数据的存储为先高字节,后
6、低字节,这样在某些机器中会出错。 3、整型变量的定义如: byteb;/指定变量b为byte型 shorts;/指定变量s为short型 inti;/指定变量i为int型 longl;/指定变量l为long型 2.4浮点型(实型)数据 浮点数分为单精度和双精度,Java中的单精度和双精度分别为float和double。float占4个字节,double占8个字节。1、实型常量 与C,C+相同,Java的实常数有两种表示形式: 十进制数形式,由数字和小数点组成,且必须有小数点,如0.123,.123,123.,123.0 科学计数法形式。如:123e3或123E3,其中e或E之前必须有数字,且e
7、或E后面的指数必须整数。实常数在机器中占64位,具有double型的值。对于float型的值,则要在数字后加f或F,如12.3F,它在机器中占32位,且表示精度较低。2、实型变量 实型变量的类型有float和double两种,下表列出这两种类型所占内存的位数和其表示范围。 数据类型所占位数数的范围 float323.4e-0383.4e+038 double641.7e-3081.7e+308 双精度类型double比单精度类型float具有更高的精度和更大的表示范围,常常使用。 3、实型变量定义floatf; / 指定变量f为float型 doubled; / 指定变量d为double型注与
8、C、C+不同,Java中没有无符号型整数,而且明确规定了整型和浮点型数据所占的内存字节数,这样就保证了安全性、鲁棒性和平台无关性。 2.5字符型数据 1、字符常量字符常量是用单引号括起来的一个字符,如a,A。另外,与C、C+相同,Java也提供转 义字符,以反斜杠()开头,将其后的字符转变为另外的含义,下表列出了Java中的转义字符。 与C、C+不同,Java中的字符型数据是16位无符号型数据,它表示Unicode集,而不仅仅是 ASCII集,例如u0061表示ISO拉丁码的a。 转义字符描述 ddd1到3位8进制数据所表示的字符(ddd) uxxxx1到4位16进制数所表示的字符(xxxx)
9、 单引号字符反斜杠字符r回车n换行f走纸换页t横向跳格b退格2、字符型变量字符型变量的类型为char,它在机器中占16位,其范围为065535。字符型变量的定义如 charc=a;/指定变量c为char型,且赋初值为a 与C、C+不同,Java中的字符型数据不能用作整数,因为Java不提供无符号整数类型。但是同样可以把它当作整数数据来操作。例如: intthree=3; charone=1; charfour=(char)(three+one);/four=4 上例中,在计算加法时,字符型变量one被转化为整数,进行相加,最后把结果又转化为字符型。3、字符串常量与C、C+相同,Java的字符串
10、常量是用双引号()括起来的一串字符,如Thisisastring.n。但不同的是,Java中的字符串常量是作为String类的一个对象来处理的,而不是一个数据。有关类String我们将在第七章讲述。 2.6布尔型数据布尔型数据只有两个值,true和false,且它们不对应于任何整数值,在流控制中常用到。布尔型变量的定义如:booleanb=true; /定义b为布尔型变量,且初值为true2.7举例 例2.1.下例中用到了前面提到的数据类型,并通过屏幕显示它们的值。 publicclassSimpleTypes publicstaticvoidmain(Stringargs) byteb=0x
11、55; shorts=0x55ff; inti=; longl=0xfffL; charc=c; floatf=0.23F; doubled=0.7E-3; booleanbool=true; System.out.println(b=+b); System.out.println(s=+s); System.out.println(i=+i); System.out.println(l=+l); System.out.println(c=+c); System.out.println(f=+f); System.out.println(d=+d); System.out.println(bo
12、ol=+bool); 编译并运行该程序,输出结果为: C:javaSimpleTypes b=85 s=22015 i= l=4095 c=c f=0.23 d=0.0007 bool=true 2.8各类数值型数据间的混合运算1、自动类型转换整型、实型、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。转换从低级到高级,转换规则为:(byte或short)opintint (byte或short或int)oplonglong (byte或short或int或long)opfloatfloat (byte或short或int或long或float)opdoubled
13、ouble charopintint 其中,箭头左边表示参与运算的数据类型,op为运算符(如加、减、乘、除等),右边表示转换成的进行运算的数据类型。 例2.2 publicclassPromotion publicstaticvoidmain(Stringargs) byteb=10; charc=a; inti=90; longl=555L; floatf=3.5f; doubled=1.234; floatf1=f*b; /float*byte-float inti1=c+i; /char+int-int longl1=l+i1; /long+int-ling doubled1=f1/i1-d; /float/int-float,float-double-double 2、强制类型转换 高级数据要转换成低级数据,需用到强制类型转换,如: inti; byteb=(byte)i; /把int型变量i强制转换为byte型这种使用可能会导致溢出或精度的下降,最好不要使用。