第2章基本类型、数组、枚举类型.ppt

上传人:本田雅阁 文档编号:3423933 上传时间:2019-08-24 格式:PPT 页数:50 大小:5.13MB
返回 下载 相关 举报
第2章基本类型、数组、枚举类型.ppt_第1页
第1页 / 共50页
第2章基本类型、数组、枚举类型.ppt_第2页
第2页 / 共50页
第2章基本类型、数组、枚举类型.ppt_第3页
第3页 / 共50页
第2章基本类型、数组、枚举类型.ppt_第4页
第4页 / 共50页
第2章基本类型、数组、枚举类型.ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《第2章基本类型、数组、枚举类型.ppt》由会员分享,可在线阅读,更多相关《第2章基本类型、数组、枚举类型.ppt(50页珍藏版)》请在三一文库上搜索。

1、第2章,基本类型、数组和枚举类型,2.1 标识符和关键字 2.2 基本数据类型 2.3 从命令行输入输出数据 2.4 数组 2.5 枚举类型,主要内容,2.1 标识符和关键字,1.标识符 用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。 简单地说,标识符就是一个名字。,2. 标识符的命名规则: 标识符必须以字母、下划线(_)或美元符($)开头,后面可以跟字母、数字、下划线或美元符; 标识符可以包含数字,但不能以数字开头; 除下划线“_”和“$”符号外,标识符中不包含任何特殊字符,如空格; 标识符区分大小写,比如,“abc”和“Abc”是两个不同的标识符; 对于标识

2、符的长度没有限制; 不能使用Java关键字作为标识符; 使用Unicode标准字符集作为标示符;,2.1 标识符和关键字,2.1 标识符和关键字,3.关键字 关键字就是Java语言中已经被赋予特定意义的一些单词。 不可以把关键字做为标识符来用。,abstract assert boolean break byte case catch char class const continue default do double else extends final finally float for goto if implements import instanceof int inte rfac

3、e long native new package private protected public return short static strictfp super switch synchonized this throw throws transient try void volatile while,2.2 基本数据类型,浮点类型,单精度型(float) 4个字节 双精度型(double) 8个字节,逻辑类型(boolean),字节型(byte) 1字节 短整型(short) 2字节 整 型(int) 4字节 长整型(long) 8字节,整数类型,基本类型,引用类型,类(class

4、) 接口(interface) 数组 枚举(enum) 注解(annotation),数据 类型,字符类型(char) 2字节,基本数据类型容纳的值及其范围,2.2 基本数据类型,引用类型,2.2 基本数据类型,2.2 基本数据类型,一、常量,常量,十进制数: 八进制数: 十六进制数:,字符常量,整型常量,以非0开始的数,如:220、-560、+369等。,以0开始的数,如:06、0106、0677等。,以0X或0x开始的数:0X123、0xab、 0X4e,浮点型常量 (十进制实数),一般 形式 指数 形式,由数字、小数点以及必要时的正负号组成。,如:29.56、-56.33、0.056、.

5、056、0.0等。,相当于科学计数法,将形如a10b的数值表示成如下形式: aEb 或 aeb 如: 2.956E3、-0.789e8、.792e-6等。,用两个英文单引号限定的一个字符,如:a 、9 、Z等。,另外,还有以“”开头的转义字符常量,如n。,逻辑常量,true(真) false(假),注意不同类型常量的表示方法,1、long 型 常量:long型常量用后缀L来表示,例如108L(十进制)、07123L(八进制)、0x3ABCL(十六进制) ,后缀用L或l表示。 2、 float型 常量:453.5439f,21379.987F,231.0f ,后缀用F或f表示。需要特别注意的是:

6、常量后面必须要有后缀“f”或“F”。 3、double 型 常量:2389.539d,2318908.987,0.05(小数表示法), 后缀用D或d表示。 但允许省略该后缀。 float x=123.78 对吗?为什么?,1. 标识符的命名规则: 标识符必须以字母、下划线(_)或美元符($)开头,后面可以跟字母、数字、下划线或美元符; 标识符可以包含数字,但不能以数字开头; 除下划线“_”和“$”符号外,标识符中不包含任何特殊字符,如空格; 标识符区分大小写,比如,“abc”和“Abc”是两个不同的标识符; 对于标识符的长度没有限制; 不能使用Java关键字作为标识符; 使用Unicode标准

7、字符集作为标示符;,上节主要内容,上节主要内容,浮点类型,单精度型(float) 4个字节 双精度型(double) 8个字节,逻辑类型(boolean),字节型(byte) 1字节 短整型(short) 2字节 整 型(int) 4字节 长整型(long) 8字节,整数类型,基本类型,引用类型,类(class) 接口(interface) 数组 枚举(enum) 注解(annotation),数据 类型,字符类型(char) 2字节,2、数据类型,上节主要内容,3、常量,常量,十进制数: 八进制数: 十六进制数:,字符常量,整型常量,以非0开始的数,如:220、-560、+369等。,以0开

8、始的数,如:06、0106、0677等。,以0X或0x开始的数:0X123、0xab、 0X4e,浮点型常量 (十进制实数),一般 形式 指数 形式,由数字、小数点以及必要时的正负号组成。,如:29.56、-56.33、0.056、.056、0.0等。,相当于科学计数法,将形如a10b的数值表示成如下形式: aEb 或 aeb 如: 2.956E3、-0.789e8、.792e-6等。,用两个英文单引号限定的一个字符,如:a 、9 、Z等。,另外,还有以“”开头的转义字符常量,如n。,逻辑常量,true(真) false(假),上节主要内容,long 型 常量:long型常量用后缀L来表示,例

9、如108L(十进制)、07123L(八进制)、0x3ABCL(十六进制) ,后缀用L或l表示。 float型 常量:453.5439f,21379.987F,231.0f ,后缀用F或f表示。需要特别注意的是:常量后面必须要有后缀“f”或“F”。 double 型 常量:2389.539d,2318908.987,0.05(小数表示法), 后缀用D或d表示。 但允许省略该后缀。 float x=123.78 对吗?为什么?,4、long 型、浮点型常量表示方法,转义字符,使用一种特殊形式的字符常量值来表示一些难以用一般字符来表示的字符,以一个“”开头的字符序列,2.2 基本数据类型,转义符应用

10、举例,Example2_1.java public class Example2_1 public static void main (String args ) char ch1=,ch2=好; int p1=32831,p2=30452; System.out.println(“+ch1+“的位置:“+(int)ch1); System.out.println(“+ch2+“的位置:“+(int)ch2); System.out.println(“第“+p1+“个位置上的字符是:“+(char)p1); System.out.println(“第“+p2+“个位置上的字符是:“+(char

11、)p2); ,2.2 基本数据类型,二、变量,变量定义的一般格式为: 数据类型标识符 变量名表; 说明: 数据类型符用来说明变量的数据类型,它可以是Java语言提供的任意一种类型。 变量名表可以是一个变量,也可以是多个变量,多个变量之间用逗号分隔。 程序中用到的变量,必须“先定义后使用”。,变量的初始化,变量在使用之前必须被初始化,也就是至少被赋值一次。 可以声明的同时赋值: int i = 10; String s = “abcd”; 也可以声明以后再赋值: int i; String s; i = 99; s = “xyz”;,2.2 基本数据类型,2.2 基本数据类型,例: 字符型变量应

12、用举例,public class Test2 public static void main(String args) char x,y; x=a; y=97; System.out.println(x); System.out.println(y); ,2.2 基本数据类型,三、基本数据类型的转换,当把一种数据类型变量赋值给另一种基本类型变量时,就要数据转换。 Java中数据的基本类型(不包括逻辑类型)按精度从“低”到“高”排列: byte short char int long float double (1)当把级别低的变量的值赋给级别高的变量时,系统自动完成数据类型的转换。例如: fl

13、oat x=100; (2)当把级别高的变量的值赋给级别低的变量时,必须使用显式类型转换运算。 显式转换的格式:(类型名)要转换的值; 例如: int x=(int)34.89; float x= 12.4 错误?为什么! 正确方式:float x=(float)12.4 或者 float x=12.4f,基本类型转换应用举例,Example2_2.java public class Example2_2 public static void main (String args ) int c=128; long d=77777; float f=2e3F; double g=3.14e-30

14、0; /指数表示法 double result=f*g; System.out.println(“f=“+f); System.out.println(“g=“+g); System.out.println(“rerult=“+result); g=1234.123456789; /小数表示法 c=(int)d; f=(float)g; /导致精度的损失 System.out.print(“ c= “+c); System.out.println(“ d= “+d); System.out.println(“f=“+f); System.out.println(“g=“+g); ,2.3 从命

15、令行输入输出数据,一、输入基本型数据,可以利用Scanner类来实现基本型数据的输入。 使用Scanner类创建一个对象: Scanner reader=new Scanner(System.in); reader对象调用下列方法,读取用户在命令行(例如,MS-DOS窗口)输入的各种基本类型数据: nextBoolean()、 nextByte()、 nextShort()、 nextInt() nextLong()、nextFloat()、nextDouble()。 上述方法执行时都会堵塞,程序等待用户在命令行输入数据回车确认。,输入数据应用举例,xample2_3.java import

16、java.util.Scanner; public class Example2_3 public static void main (String args ) System.out.println(“请输入若干个数,每输入一个数回车确认“); System.out.println(“最后输入数字0结束输入操作“); Scanner reader=new Scanner(System.in); double sum=0; int m=0; double x = reader.nextDouble(); while(x!=0) m=m+1; sum=sum+x; x=reader.nextDo

17、uble(); System.out.println(m+“个数的和为“+sum); System.out.println(m+“个数的平均值“+sum/m); ,2.3 从命令行输入输出数据,二、输出基本型数据,(1)用System.out.println() 或 System.out.print() 可输出串值、表达式的值。 二者的区别是前者输出数据后换行,后者不换行。 (2)允许使用并置符号:“+”将变量、表达式或一个常数值与一个字符串并置一起输出,如: System.out.println(m+“个数的和为“+sum); System.out.println(“:”+123+“大于”+

18、122),(3) JDK1.5新增了和C语言中printf函数类似的数据输出方法,该方法使用格式如下: (a)System.out.printf(“格式控制部分“,表达式1,表达式2,表达式n) (b)格式控制部分由格式控制符号:%d、%c、%f、%s和普通的字符组成,普通字符原样输出。 (c)格式符号用来输出表达式的值: %d:输出int类型数据值 %c:输出char型数据。 %f:输出浮点型数据,小数部分最多保留6位 %s:输出字符串数据。 (d) 输出数据时也可以控制数据在命令行的位置,例如: %md:输出的int型数据占m列 %m.nf:输出的浮点型数据占m列,小数点保留n位。,2.4

19、 数组,数组是相同类型的变量按顺序组成的一种复合数据类型,称这些相同类型的变量为数组的元素或单元。 数组通过数组名加索引来使用数组的元素。索引从0开始。,2.4.1 声明数组,声明数组包括数组的名字、数组元素的数据类型。 (1)声明一维数组有下列两种格式: 数组的元素类型 数组名字 ; 或 数组的元素类型 数组名字; 例如:float boy ; 或 float boy; 数组长度length 数组.length (2)声明2维数组有下列两种格式: 数组的元素类型 数组名字; 或 数组的元素类型 数组名字; 例如:char cat ; 或 char cat; 数组boy的元素存放float型数

20、据、数组cat的元素存放char型数据。,2.4.1 声明数组,(3)数组的元素的类型可以是Java的任何一种类型 假如已经声明了一种People类型数据,那么可以如下声明一个数组: People china ; 数组china的元素可以存放People类型的数据。 注:与C、C+不同,Java不允许在声明数组的方括号内指定数组元素的个数。 比如:int a12; 或 int 12 a;将导致语法错误。,2.4.2 创建数组,广义的讲,数组也是一种数据类型:声明数组仅仅给出了数组名字和元素的数据类型,要想真正使用数组还必须为它分配内存空间,即创建数组。 这也是刚才讲的数组声明时不得指定元素数目

21、的原因!,(1)一维数组创建及内存空间分配: 数组名字 = new 数组元素的类型数组元素的个数;,例如: float boy ; boy= new float4; 数组boy获得4个用来存放float 类型数据的内存空间(如图)。 数组变量boy中存放着这些内 存单元的首地址,该地址称作 数组的引用,这样数组就可以 通过索引操作这些内存单元 。,2.4.2 创建数组,(2)声明数组和创建数组可以一起完成,如: float boy=new float4; (3)二维数组声明以及分配内存空间: 例如:int mat; mat=new int 23; 或 int mat=new int23; (4

22、)二维数组可以看做若干个一维数组组成的,由此可以采用“数组的数组”声明多维数组。,二维数组可以看做若干个一维数组组成的,int mat; mat=new int 23;,2.4.3 数组元素的使用,(1)一维数组通过索引符访问自己的元素,如 boy0,boy1等。 注意:索引从0开始,数组若有7个元素,那么索引到6为止,如果程序使用了如下语句:boy7=384.98f; 程序运行时将发生.ArrayIndexOutOfBoundsException异常,因此在使用数组时必须谨慎,防止索引越界。 (2)二维数组也通过索引符访问自己的元素,如a01,a12等; 注意:索引从0开始,比如声明创建了一

23、个二维数组a: int a = new int23; 那么第一个索引的变化范围从0到1,第二个索引变化范围从0到2。,2.4.4 数组元素的长度- length的使用,一维数组的元素的个数称作数组的长度。 (1)对于一维数组,“数组名字.length”的值就是数组中元素的个数。 对于 float a = new float12; a.length的值12 (2)对于二维数组“数组名字.length”的值是它含有的一维数组的个数。 对于 int b = new int36; b.length的值是3,2.4.5 数组的初始化,创建数组后,系统会给每个数组元素一个默认的值,如,float型是0.0

24、。 (1)在声明数组时同时也可以给数组的元素一个初始值,如: float boy = 21.3f,23.89f,2.0f,23f,778.98f; (2)也可以直接用若干个一维数组初始化一个二维数组,这些一维数组的长度不尽相同,如: Int a=1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,2.4.6 数组的引用,数组属于引用型变量,因此两个相同类型的数组如果具有相同的引用,它们就有完全相同的元素。 (注意:数组引用和数组的使用的区别,引用是地址赋值范畴) 例如,对于下列数组: int a = 1,2,3 b = 4,5; 如果使用了下列赋值语句(a和b的类型必须相同): a=b

25、; 那么a中存放的引用和b的相同。 ( 见下图),2.4.6 数组的引用,数组的引用 举例,Example2_4.java public class Example2_4 public static void main(String args) int a=1,2,3,4; int b=100,200,300; System.out.println(“数组a的元素个数=“+a.length); System.out.println(“数组b的元素个数=“+b.length); System.out.println(“数组a的引用=“+a); System.out.println(“数组b的引用

26、=“+b); System.out.println(“a=b的结果是“+(a=b); a=b; System.out.println(“数组a的元素个数=“+a.length); System.out.println(“数组b的元素个数=“+b.length); System.out.println(“a=b的结果是“+(a=b); System.out.println(“a0=“+a0+“,a1=“+a1+“,a2=“+a2); System.out.print(“b0=“+a0+“,b1=“+b1+“,b2=“+b2); ,数组的引用 注意事项,注意: 对于char型数组a,System.

27、out.println(a)不会输出数组a的引用,而是输出数组a的全部元素的值。 要想输出char型数组a的引用,必须让数组a和字符窜做并置运算: System.out.println(“”+a);,2.4.7 数组的表示格式,Arrays类调用 public static String toString(int a)方法,可以得到参数指定的一维数组a的如下格式的字符串表示: a0,a1 aa.length-1 例如:对于数组 Int a=1,2,3,4,5,6 Arrays. toString(a)得到的字符串是: 1,2,3,4,5,6 注:toString是所有对象的一种方法,可以改写!

28、,2.4.8 复制数组,数组间的赋值,可用循环实现,也可用下边提供的方法实现! 1arraycopy方法 System类调用方法: public static void arraycopy(sourceArray,int index1,copyArray,int index2,int length) sourceArray:源数组名 index1:原数组开始位置 copyArray:目标数组名 index2:目标数组开始位置 Length:复制长度 可以将数组sourceArray从索引index1开始后的length个元素中的数据复制到数组copyArray中,copyArray数组从第in

29、dex2元素开始存放这些数据。 例2-5:,import java.util.Arrays; public class Example2_5 public static void main(String args) char a = a,b,c, d,e,f, b = 1,2,3,4,5,6; int c =1,2,3,4,5,6, d = 10,20,30,40,50,60; System.arraycopy(a, 0, b, 0, a.length); System.arraycopy(c, 2, d, 2, c.length-3); System.out.println(“数组 a 的各

30、个元素中的值:“); System.out.println(Arrays.toString(a); System.out.println(“数组 b 的各个元素中的值:“); System.out.println(Arrays.toString(b); System.out.println(“数组 c 的各个元素中的值:“); System.out.println(Arrays.toString(c); System.out.println(“数组 d 的各个元素中的值:“); System.out.println(Arrays.toString(d); /System.out.println

31、(a); /System.out.println(“+a); ,2.4.8 复制数组,2copyOf和copyOfRange()方法 copyOf:把整个数组中元素的值复制到另一个新的数组中。 public static double copyOf(double original ,int newLength) 复制源数组中从0开始的newlength个元素的值到另一个数组中。 根据不同的数据类型,还有多种数据类型表示 例如: Int a=100,200,300,400 Int b=Arrays.copyof(a,5) 那么:b0=100 b1=200 b2=300 b4=400 b5=0,2

32、.4.8 复制数组,copyOfRange()方法 copyOfRange()方法把数组中部分元素的值复制到另一个新数组中。 public static double copyOfRange(double original,int from ,int to) 功能:从from -(to -1)的元素复制到一个新数组中 ; 注:新数组长度为( to from ) 例如: Int a=100,200,300,400,500,600 Int b=Arrays.copyofRange(a,2,5) 那么:b0=300 b1=400 b2=500 例2-6,import java.util.*; pub

33、lic class Example2_6 public static void main(String args) int a =10,20,30,40,50,60,b,c,d; b=Arrays.copyOf(a,10); System.out.println(“数组 a 的各个元素中的值:“); System.out.println(Arrays.toString(a); System.out.println(“数组 b 的各个元素中的值:“); System.out.println(Arrays.toString(b); c=Arrays.copyOfRange(a,3,5); Syst

34、em.out.println(“数组 c 的各个元素中的值:“); System.out.println(Arrays.toString(c); d=Arrays.copyOfRange(a,3,9); System.out.println(“数组 d 的各个元素中的值:“); System.out.println(Arrays.toString(d); ,2.4.9 排序与二分查找,1Array类调用 Arrays.sort(a) 方法 把数组a中的元素按升序排序。 2Array类调用 Arrays.sort (a , start , end) 方法 把数组a中的元素中索引star到end-

35、1的元素值按升序排序。 3Array类调用(二分法) Arrays.binarySearch( a, number)方法 在有序数组a中,查找元素number, 若存在则返回number在a中的索引,否则返回一个负数。 例2-7,import java.util.*; public class Example2_7 public static void main(String args) int a=12,34,9,23,45,6,45,90,123,19,34; Arrays.sort(a); System.out.println(Arrays.toString(a); int number

36、=45; int index=Arrays.binarySearch(a,number); if(index=0) System.out.println(number+“和数组中索引为“+index+“的元素值相同“); else System.out.println(number+“不与数组中任何元素值相同“); ,2.5 枚举类型,Java使用关键字enum声明枚举类型,语法格式如下: enum 枚举名 常量列表 其中的常量列表是用逗号分割的字符序列,称为枚举类型的常量。枚举型变量只能取自枚举类型中的常量。 枚举类型的常量要符合标识符之规定,即由字母、下划线、美元符号和数字组成,并且第一个

37、字符不能是数字字符。 enum Season 春季,夏季,秋季,冬季 枚举类型声明与赋值:Season x; x= Season.春季 例2-8 ,例2-9,enum Season 春季,夏季,秋季,冬季 public class Example2_8 public static void main(String args) Season x=Season.春季; System.out.println(x); x=Season.夏季; System.out.println(x); x=Season.秋季; System.out.println(x); x=Season.冬季; System.o

38、ut.println(x); ,例2-8,public enum Weekday 星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期日 public class Example2_9 public static void main(String args) Weekday x=Weekday.星期日; if(x=Weekday.星期日) System.out.println(x); System.out.println(“今天我休息“); ,例2-9,标识符是由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字字符 Java有8中基本数据类型:boolean、byte、short、int、long、float、double和char 数组是按序排列的具有相同类型的变量的集合,数组属于引用类型变量。 JDK1.5版本引入了一种新的数据类型枚举类型,小结,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1