《Java面向对象程序设计(基本类型、数组和枚举类型).ppt》由会员分享,可在线阅读,更多相关《Java面向对象程序设计(基本类型、数组和枚举类型).ppt(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Java面向对象程序设计第第2章章基本类型、数组和枚举类型基本类型、数组和枚举类型1/28/2023主要内容主要内容标识符和关键字标识符和关键字基本数据类型基本数据类型从命令行输入、输出数据从命令行输入、输出数据数组数组枚举类型枚举类型难点难点数组数组导读导读2.1标识符和关键字标识符和关键字 1.1.标识符标识符 用用来来标标识识类类名名、变变量量名名、方方法法名名、类类型型名名、数数组组名名、文文件件名名的的有有效效字字符符序序列列称称为为标标识识符符。简简单单地地说说,标识符就是一个名字。标识符就是一个名字。2.2.关键字关键字 关关键键字字就就是是Java语语言言中中已已经经被被赋赋予
2、予特特定定意意义义的的一一些单词。不可以把关键字做为标识符来用。些单词。不可以把关键字做为标识符来用。2.2基本数据类型基本数据类型 基基本本数数据据类类型型也也称称作作简简单单数数据据类类型型。JavaJava语言有语言有8 8种基本数据类型,分别是:种基本数据类型,分别是:booleanboolean、bytebyte、shortshort、intint、longlong、floatfloat、doubledouble、charchar。这这8 8种基本数据类型习惯上可分为以下四大类型:种基本数据类型习惯上可分为以下四大类型:逻辑类型:逻辑类型:booleanboolean 整数类型:整数
3、类型:bytebyte、shortshort、intint、longlong 字符类型:字符类型:charchar 浮点类型:浮点类型:floatfloat、doubledouble 2.2.1逻辑类型逻辑类型常量:常量:true,false。变量:变量:使用关键字使用关键字boolean来声明逻辑变量,来声明逻辑变量,声明时也可以赋给初值,声明时也可以赋给初值,例如:例如:boolean x,ok=true,关闭关闭=false;2.2.2整数类型整数类型1int 型型常量:常量:123,6000(十进制),(十进制),077(八进制),(八进制),0 x3ABC(十六进制)。(十六进制)。
4、变量:变量:使用关键字使用关键字intint来声明来声明intint型变量,声明时也可以赋给初值,型变量,声明时也可以赋给初值,例如:例如:int x=12,平均平均=9898,jiafei;对于对于int型变量,内存分配给型变量,内存分配给4个字节(个字节(byte),占),占32位。位。2byte 型型 常常量量:Java中中不不存存在在byte型型常常量量的的表表示示法法,但但可可以以把把一一定定范范围围内内的的int型型常常量量赋赋值值给给byte型变量。型变量。变量:变量:使用关键字使用关键字bytebyte来声明来声明byte byte 型变量型变量 例如:例如:byte x=-1
5、2,tom=28,漂亮漂亮=98;对对于于bytebyte型内存分配型内存分配给给1 1个字个字节节,占,占8 8位位 。3 3 short short 型型 常常量量:和和bytebyte型型类类似似,Java中中也也不不存存在在short型型常常量量的的表表示示法法,但但可可以以把把一一定定范范围围内内的的int型常量赋值给型常量赋值给short型变量。型变量。变量:变量:使用关键字使用关键字shortshort来声明来声明shortshort型变量型变量 例如:例如:short x=12,y=1234;对对于于shortshort型型变变量,内存分配量,内存分配给给2 2个字个字节节,占
6、,占1616位位.4.long 4.long 型型 常常量量:longlong型型常常 量量 用用后后缀缀 L L来来 表表示示,例例 如如108L(108L(十十 进进 制制)、07123L(07123L(八八进进制制)、0 x3ABCL(十六进制十六进制)。变量:变量:使用关键字使用关键字longlong来声明来声明longlong型变量,型变量,例如:例如:long width=12L,height=2005L,length;对于对于longlong型变量,内存分配给型变量,内存分配给8 8个字节,占个字节,占6464位。位。2.2.3字符类型字符类型 1.常常量量:常常量量:A,b,?
7、,!,9,好好,t,等,等,即用单引号扩起的即用单引号扩起的Unicode表中的一个字符。表中的一个字符。2.变量:变量:使用关键字使用关键字charchar来声明来声明charchar型变量,型变量,例如:例如:char ch=A,home=char ch=A,home=家家,handsome=,handsome=酷酷;对于对于charchar型变量,内存分配给型变量,内存分配给2 2个字节,占个字节,占1616位位 3.3.转转意意字字符符常常量量:有有些些字字符符(如如回回车车符符)不不能能通通过过键键盘盘输输入入到到字字符符串或程序中,就需要使用转意字符常量串或程序中,就需要使用转意字
8、符常量,例如:例如:nn(换行),(换行),bb(退格),(退格),tt(水平制表),(水平制表),(单引号),(单引号),“(双引号),(双引号),(反斜线)(反斜线)等。等。4.4.要要观观察察一一个个字字符符在在UnicodeUnicode表表中中的的顺顺序序位位置置,可可以以使使用用intint型型显显示转换,如示转换,如(int)a(int)a或或int p=aint p=a。5.5.如如果果要要得得到到一一个个0 06553665536之之间间的的数数所所代代表表的的UnicodeUnicode表表中中相相应应位位置上的字符置上的字符 必须使用必须使用charchar型显示转换。型
9、显示转换。例例2-12-1 2.2.4浮点类型浮点类型 1.float型型 常常量量:453.5439f453.5439f,21379.987F21379.987F,231.0f231.0f(小小数数表表示示法法),2e40f2e40f(2 2乘乘1010的的4040次次方方,指指数数表表示示法法)。需需要要特特别别注注意意的的是是:常常量量后后面必须要有后缀面必须要有后缀“f”“f”或或“F”“F”。变量:变量:使用关键字使用关键字float来声明来声明float型变量,型变量,例如:例如:float x=22.76f,tom=1234.987f,weight=1e-12F;精精度度:flo
10、at变变量量在在存存储储float型型数数据据时时保保留留8位位有有效效数数字字,实实际际精精度取决于具体数值。度取决于具体数值。对于对于floatfloat型变量,内存分配给型变量,内存分配给4 4个字节,占个字节,占3232位。位。2.double 型型 常常量量:2389.539d2389.539d,2318908.9872318908.987,0.050.05(小小数数表表示示法法),1e-901e-90(1 1乘乘1010的的-90-90次次方方,指指数数表表示示法法)。对对于于doubledouble常常量量,后后面面可可以有后缀以有后缀“d”“d”或或“D”“D”,但允许省略该后
11、缀。,但允许省略该后缀。变量:变量:使用关键字使用关键字doubledouble来声明来声明doubledouble型变量,型变量,例如:例如:double height=23.345,width=34.56D,length=1e12;对于对于doubledouble型变量,内存分配给型变量,内存分配给8 8个字节,占个字节,占6464位位 。精精度度:double变变量量在在存存储储double型型数数据据时时保保留留16位位有有效效数数字字,实实际精度取决于具体数值。际精度取决于具体数值。2.2.5基本数据类型的转换基本数据类型的转换 Java中数据的基本类型(不包括逻辑类型)按精度从中数
12、据的基本类型(不包括逻辑类型)按精度从“低低”到到“高高”排列:排列:byte short char int long float doublebyte short char int long float double 当当把把级级别别低低的的变变量量的的值值赋赋给给级级别别高高的的变变量量时时,系系统统自自动动完完成成数数据据类类型型的的转转换换。例如:例如:float x=100;float x=100;当当把把级级别别高高的的变变量量的的值值赋赋给给级级别别低低的的变变量量时时,必必须须使使用用显显示示类类型型转转换换运运算算。显示转换的格式:显示转换的格式:(类型名)要转换的值(类型名
13、)要转换的值;例如例如 int x=(int)34.89;int x=(int)34.89;当当把把一一个个intint型型常常量量赋赋值值给给一一个个bytebyte和和shortshort型型变变量量时时,不不可可以以超超出出这这些些变变量量的的取取值值范范围围,否否则则必必须须进进行行类类型型转转换换运运算算;例例如如,常常量量128128的的属属于于intint型型常常量量,超超出出bytebyte变变量量的的取取值值范范围围,如如果果赋赋值值给给bytebyte型型变变量量,必必须须进进行行bytebyte类类型转换运算(将导致精度的损失),如下所示:型转换运算(将导致精度的损失),
14、如下所示:byte a=(byte)128;byte a=(byte)128;例例2-22-22.3从命令行输入、输出数据从命令行输入、输出数据2.3.1输入基本型数据输入基本型数据 可以使用Scanner类创建一个对象:Scanner reader=new Scanner(System.in);reader对象调用下列方法,读取用户在命令行(例如,MS-DOS窗口)输入的各种基本类型数据:nextBoolean()、nextByte()、nextShort()、nextInt()nextLong()、nextFloat()、nextDouble()。上述方法执行时都会堵塞,程序等待用户在命令
15、行输入数据回车确认。例例2-32-3 2.3.2输出基本型数据输出基本型数据 用System.out.println()或System.out.print()可输出串值、表达式的值,二者的区别是前者输出数据后换行,后者不换行。允许使用并置符号:“+”将变量、表达式或一个常数值与一个字符串并置一起输出,如:System.out.println(m+个数的和为+sum);System.out.println(“:”+123+“大于”+122)JDK1.5新增了和C语言中printf函数类似的数据输出方法,该方法使用格式如下:System.out.printf(格式控制部分格式控制部分,表达式,表达
16、式1,表达式,表达式2,表达式表达式n)格式控制部分由格式控制符号:%d、%c、%f、%s和普通的字符组成,普通字符原样输出。格式符号用来输出表达式的值。%d:输出:输出int类型数据值类型数据值%c:输出:输出char型数据。型数据。%f:输出浮点型数据,小数部分最多保留:输出浮点型数据,小数部分最多保留6位位%s:输出字符串数据。:输出字符串数据。输出数据时也可以控制数据在命令行的位置,例如:%md:输出的:输出的int型数据占型数据占m列列%m.nf:输出的浮点型数据占:输出的浮点型数据占m列,小数点保留列,小数点保留n位。位。2.4数组数组 数数组组是是相相同同类类型型的的变变量量按按
17、顺顺序序组组成成的的一一种种复复合合数数据据类类型型,称称这这些些相相同同类类型型的的变变量量为为数数组组的的元元素素或或单单元元。数数组组通通过过数数组组名名加加索索引引来来使使用用数组的元素。索引从数组的元素。索引从0 0开始。开始。2.4.1声明数组声明数组 声明一维数组有下列两种格式:声明一维数组有下列两种格式:数组的元素类型数组的元素类型 数组名字数组名字;或或 数组的元素类型数组的元素类型 数组名字数组名字;例如:例如:float boy;或或 float boy;声明声明2维数组有下列两种格式:维数组有下列两种格式:数组的元素类型数组的元素类型 数组名字数组名字;或或 数组的元素
18、类型数组的元素类型 数组名字数组名字;例如:例如:char cat;或或 char cat;数组boy的元素可以存放float型数据、数组cat的元素可以存放char型数据。数组的元素的类型可以是数组的元素的类型可以是Java的任何一种类型。的任何一种类型。假如已经声明了一种People类型数据,那么可以如下声明一个数组:People china;数组china的元素可以存放People类型的数据。2.4.2创建数组创建数组 为数组分配内存空间的格式如下为数组分配内存空间的格式如下:数组名字=new 数组元素的类型数组元素的个数;例如:例如:boy=new float4;为为数数组组分分配配内
19、内存存空空间间后后,数数组组boy获获得得4个个用用来来存存放放float类类型型数数据的内存空间,即据的内存空间,即4个个float型元素。型元素。数数组组变变量量boy中中存存放放着着这这些些内内存存单单元元的的首首地地址址,该该地地址址称称作作数数组的引用,这样数组就可以通过索引操作这些内存单元组的引用,这样数组就可以通过索引操作这些内存单元。boy图图2.4 数组的内存模型数组的内存模型 0 x785BAboy0boy1boy2boy3声明数组和创建数组可以一起完成,例如:float boy=new float4;二维数组和一维数组一样,在声明之后必须用new运算符分配内存空间,例如:
20、int mytwo;mytwo=new int 34;或 int mytwo=new int34;2.4.3数组元素的使用数组元素的使用 一维数组通过索引符访问自己的元素,如boy0,boy1等。注注意意:索引从0开始,数组若有7个元素,那么索引到6为止,如果程序使用了如下语句:boy7=384.98f;程序运行时将发生.ArrayIndexOutOfBoundsException异常,因此在使用数组时必须谨慎,防止索引越界。二维数组也通过索引符访问自己的元素,如a01,a12等;需要注意的是索引从0开始,比如声明创建了一个二维数组a:int a=new int23;那么第一个索引的变化范围从
21、0到1,第二个索引变化范围从0到2。2.4.4lengthlength的使用的使用 一数组的元素的个数称作数组的长度。对于一维数组,“数组名字.length”的值就是数组中元素的个数。对于二维数组“数组名字.length”的值是它含有的一维数组的个数。对于 float a=new float12;a.length的值12对于 int b=new int36;b.length的值是3 2.4.5数组的初始化数组的初始化 创建数组后,系统会给每个数组元素一个默认的值,如,float型是0.0。在声明数组时同时也可以给数组的元素一个初始值,如:float boy=21.3f,23.89f,2.0f,
22、23f,778.98f;也可以直接用若干个一维数组初始化一个二维数组。2.4.6数组的引用数组的引用 数组属于引用型变量,因此两个相同类型的数组如果具有相同的引用,它们就有完全相同的元素。例如,对于int a=1,2,3,b =4,5;int a=1,2,3,b =4,5;如果使用了下列赋值语句(a和b的类型必须相同):a=b;那么a中存放的引用和b的相同。例例2-42-4 2.4.7表示格式表示格式 ArraysArrays类调用类调用 public static String toString(int a)public static String toString(int a)方法,可以得
23、到参数指定的一维数组a的如下格式的字符串表示:a0,a1 aa.length-1a0,a1 aa.length-12.4.8复制数组复制数组 1arraycopy方法方法 System System类调用方法类调用方法 public static void arraycopy(public static void arraycopy(sourceArraysourceArray,int index1int index1,copyArray,int index2,copyArray,int index2,int lengthint length)可可以以将将数数组组sourceArraysour
24、ceArray从从索索引引index1index1开开始始后后的的lengthlength个个元元素素中中的的数数据据复复制制到到数数组组copyArraycopyArray中中,copyArraycopyArray数数组组从从第第index2index2元素开始存放这些数据。元素开始存放这些数据。例例2-52-5 2copyOf和和copyOfRange()方法方法 ArraysArrays类调用类调用copyOf方法方法复制整个数组复制整个数组中元素的值到另一个数组中中元素的值到另一个数组中。public static double copyOf(double original,int n
25、ewLength)public static double copyOf(double original,int newLength)ArraysArrays类类调调用用copyOfRange()方方法法复复制制数数组组中中部部分分元元素素的的值值复复制制到到另另一一个数组中个数组中 public static double copyOfRange(double original,int from,int to)public static double copyOfRange(double original,int from,int to)例例2-62-62.4.9排序与二分查找排序与二分查找
26、 1Array类调用 public static void sort(double a)方法可以把参数a指定的double类型数组按升序排序。2Array类调用 public static void sort(double a,int start,int end)方法可以把参数a指定的double类型数组中索引star至end-1的元素的值按升序排序。3Array类调用(二分法)public static int binarySearch(double a,double number)方法判断参数number指定的数是否在参数a指定的数组中。例例2-72-72.5 枚举类型枚举类型 Java使用关键字enum声明枚举类型,语法格式如下:enum 枚举名 常量列表 其中的常量列表是用逗号分割的字符序列,称为枚举类型的常量(枚举类型的常量要符合标识符之规定,即由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字字符)。例例2-82-8,例例2-92-9