收藏 分销(赏)

第2讲Java编程基础.ppt

上传人:天**** 文档编号:14610521 上传时间:2026-10-20 格式:PPT 页数:107 大小:2.04MB 下载积分:10 金币
下载 相关
第2讲Java编程基础.ppt_第1页
第1页 / 共107页
第2讲Java编程基础.ppt_第2页
第2页 / 共107页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,Java程序设计,(SP3002,),Java,程序设计,(SP3002,),软件工程系,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,2,讲,Java,编程基础,本章目标,标识符,Java,的关键字,Java,的基本数据类型,常量、变量,Java,的运算符,表达式、语句,分支,循环,方法,变量的作用域,递归调用,2,标识符(总结上节课),Java对各种变量、方法和类等要素命名时使用的字符序列称为,标识符。,自己可以起名字的地方都叫标识符,都遵守标识符的规则。,Java标识符的命名规则:,标识符由字母、下划线“”、美元符“$”或数字组成,标识符由字母、下划线“”、美元符“$”开头,标识符大小写敏感,长度无限制,约定俗成:Java标识符选取时因注意“见名知意”,3,关键字,Java,中一些赋以特定的含义,用做专门用途的字符串称为关键字(,keyword),大多数编辑器会将关键字用特殊方式标出,所有的,Java,关键字都是小写英文,goto,和,const,虽然从未使用,但也被作为,Java,关键字保留,4,数制,Java,中允许使用的数制:,二进制,数符:,0,,,1,运算规则:逢二进一,借一当二,八进制,数符:,0,,,1,,,2,,,3,,,4,,,5,,,6,,,7,运算规则:逢八进一,借一当八,十进制,十六进制,数符:,09,,,AF(,大小写不限,),运算规则:逢十六进一,借一当十六,5,Java,中表示形式,以十进制的,30,为例,转换成以下各种进制:,二进制:,11110 (,直接书写,),八进制:,0,36 (,以数字,0,开头,),十六进制:,0 x,1E (,以数字,0,和字母,X,开头,,X,大小写不限,),建议:八进制容易与二进制混淆,最好不使用。,请问,以下哪些是十进制数,17,对应的十六进制正确表示?,(1)017 (2)x11 (3)0 x17 (4)0X11 (5)0 x11,答案,:(4),、,(5),6,数据类型,Java,是一种强类型语言,变量的使用要先声明数据类型,Java,的数据类型可分为基本数据类型和引用类型两大类。具体如下:,整数类型,(byte,short,int,long),数据类型,基本数据类型,引用数据类型,数值型,字符型,(char),布尔型,(boolean),浮点类型,(float,double),类,(class),接口,(interface),数组,7,基本,数据类型,(,系统已定义好,),Java,已定义了四大类、,8,种基本数据类型,它们具有如下特点:,所占的位数都是确定的,不因操作系统的不同而不同;,类型关键字都是小写。,数据类型所占位数数的范围,byte 8-2,7,2,7,-1,(,即,:-128,127,),short 16-2,15,2,15,-1,(,即,:-32768,32767,),int 32-2,31,2,31,-1,(,即,:-21,亿,21,亿,),long 64-2,63,2,63,-1(,即,:-922,亿亿,922,亿亿,),char 16,0,2,16,-1 (,即,0,65535,),float,32 3.4e-038,3.4e+038,double 64 1.7e-308,1.7e+308,boolean 1 true,和,false,8,整数,包括:,byte,、,short,、,int,、,long,四种,byte,型,(,字节型,),占,1,个字节,即,8,位,值的范围:,-128,127,0,0,0,0,0,1,0,1,5,1,1,1,1,1,0,1,1,-5,(5,非符号,1,位反码加,1,),符号位,补码,说明:无论什么进制,输出时都会自动转换十进制输出。,9,整数,(,续,),short,型,(,短整型,),占,2,个字节,即,16,位,值的范围:,-,32768,32767,short,int,型,(,整型,),占,4,个字节,即,32,位,值的范围:,-,21,亿,21,亿,最常用使用,但要注意取值范围。,int,10,整数,(,续,),long,型,(,长整型,),占,8,个字节,即,64,位,值的范围:,-,922,亿亿,922,亿亿,带大写或小写的,L,作为后缀。,例如:,long total=8000L;,请问,,int,型变量的取值范围是:,(1)-,2,31,2,31,-1,(2)-,2,31,-1,2,31,(3)-,2,15,2,15,-1,(4)-,2,15,-1,2,15,(5),取决于运行平台,答案,:(1),11,字符型,(,char,型,),char,型用来表示通常意义上“字符”;,字符常量是用单引号括起来的单个字符,,例如:,char c1=A,c2=,大,;,请注意:”,A”,是字符串,String,型,属于引用类型,(,即对象类型,),,不是字符型。,Java,字符采用,Unicode,编码,每个字符占,2,个字节,共有,65536,个,编码:,065535,,用,16,进制表示即为:,u0000-uFFFF,。,Unicode,编码与,ASCII,码兼容。,例如:,char c1=u0041;,表示的就是,A,。,char,12,字符型,(,char,型,)(,续,),要了解一个字符在,Unicode,表中的顺序,可以将它转换为,int,型;反过来,也可将一个整数转换字符型。,public class Unicode,public static void main(String args),char c=,大,;,System.out.println(+c+,的,Unicode,编码:,+,(int)c);,int num=23398;,System.out.println(Unicode,编码为,+num+,的字符是:,+,(char)num),;,程序运行结果:,大,的,Unicode,编码:,22823,Unicode,编码为,23398,的字符是:学,13,字符型,(,char,型,)(,续,),转义字符:改变一些字符的原有含义,实现特定功能。,格式:,字符,转义字符功能,n,换行,(new line),t,制表符,(tab),光标移至下一个制表位,输出反斜线,输出单引号,”,输出双引号”,b,退格,(backspace),r,回车,(carriage return),,光标移至当前行开始,14,浮点型,包括:,float,、,double,两种,float,型:又称单精度浮点数,占,4,个字节,即,32,位,范围:,3.4e-038,3.4e+038,,,7,位有效数字。比,long,型表示的数值范围更大。,必须在尾部加,F,或,f,后缀,否则默认为,double,型。,表示法:,定点数:例如,float f1=123.456F;,指数法:例如,float f2=1.23456e2f;,15,浮点型,(,续,),double,型:又称双精度浮点数,占,8,个字节,即,64,位,范围:,1.7e-308,1.7e+308,,,15,位有效数字。可以在尾部加上或不加,D(,或,d),后缀,因为默认的就是,double,型。,表示法:,定点数:例如,double d1=123.456;,指数法:例如,double d2=1.23456e2;,boolean,型,(,称逻辑型或布尔型,),占,1,个字节,只能取,true,(,真,),、,false,(,假,),两个值中的一个,不能用,0,或非,0,的整数替代,true,和,false,。,一般用于程序流程控制。,16,常量,什么是常量?,在程序运行过程中,其值不变的量。,常量包括:整型常量、字符常量、浮点数常量、布尔常量等,指出下列常量的类型:,true,、,98765,、,123.4567,、,123.4567f,、人、,0 xabc,、,888L,、,017,、,false,、,e,、,1.2e99,、,n,参考答案,int,型常量:,98765,,,0 xabc,,,017,long,型常量:,888L,char,型常量:,人,e,n,float,型,:123.4567f,double,型常量,:123.4567,1.2e99,boolean,型常量,:true,,,false,17,常量,(,续,),定义符号常量,格式:,final,数据类型 常量名,=,值,例如:,final double PI=3.1415926;,说明:其值一旦确定,就不能再改变,这一点与变量不同。,命名:常量名一般大写,多个单词之间用下划线连接。如果是类常量,需要在数据类型前加上,static,关键字。,18,/,将圆周率设为类常量,再计算圆的周长与面积,public class Circle,final static double PI=3.1415926;,public static void main(String args),double r=5;,System.out.println(,圆的半径,:+r);,System.out.println(,圆的周长,:+2*,PI,*r);,System.out.println(,圆的面积,:+,PI,*r*r);,程序运行结果:,圆的半径,:5.0,圆的周长,:31.415926,圆的面积,:78.539815,常量,(,续,),19,变量,什么是变量?,指程序执行过程中,其数值可以改变的量。,变量包括变量名和变量值两部分:,变量名,:用标识符命名,对应一定数量的内存存储单元,其单元数的多少由变量类型决定。,变量值,:指定存储单元存放的具体内容。,20,关于标识符,在前面已有介绍,现再重申几点:,严格区分大小写;,长度不限;,不能用关键字和保留字作为标识符;,不能包含空格。,什么是变量?,(,续,),变量的声明,Java,中的变量要遵循“,先声明,再使用,”原则,声明格式:,数据类型 变量名,;,或,数据类型 变量名,1,变量名,k ;,21,变量的声明,(,续,),例如:,从编程可读性角度来看,建议将不同变量的声明写在不同的行上。,22,变量的分类,关于“类与对象”的内容以后介绍,所以现在只讨论全局变量和局部变量。,按被声明的位置划分:,局部变量,:方法或语句块内部定义的变量,成员变量,:方法外部、类的内部定义的变量,按数据类型划分:,基本数据类型变量,引用数据类型变量,23,变量的分类,(,续,),成员变量:是指在类中声明的,类,或,对象,的成员,不能在某一类的方法里声明。,用,static,修饰,需要实例化,public class GlobalVar,int a=10;/,成员,变量,下同,double b=20;,public static void main(String args),GlobalVar globalVar=new GlobalVar();,System.out.println(,成员,变量,a=+,globalVar.a,);,/System.out.println(,成员,变量,a=+a);,错误写法,globalVar.print();,System.out.println(,成员,变量变化后,a=+globalVar.a);,public void print(),System.out.println(,在,print(),中,成员,变量,a=+,a,+,b=+,b,);,a=30,;,System.out.println(,在,print(),中,成员,变量,a=+,a,+,b=+,b,);,程序运行结果:,成员变量 a=10,在print()中,成员变量a=10,b=20.0,在print()中,成员变量a=30,b=20.0,成员变量变化后 a=30,结论,:,成员变量的,作用范围是整个类,即在该类的各个方法中可以直接使用,;,任何对成员变量,值的改变,都可能对后续操作产生影响,。,24,变量的分类,(,续,),局部变量:是指在一个方法或一个方法的程序块中声明的变量。,public class LocalVar,public static void main(String args),LocalVar localVar=new LocalVar();,/System.out.println(“,局部变量,a=”+,localVar.a,);,引用错误,下同,localVar.print();,/System.out.println(,变化后的局部变量,a=+,localVar.a,);,public void print(),int a=10;,/局部变量,下同,double b=20;,System.out.println(,在,print(),中的局部变量,a=+,a,+,b=+,b,);,a=30;,System.out.println(,在,print(),中的局部变量,a=+,a,+,b=+,b,);,程序运行结果:,在print()中的局部变量a=10,b=20.0,在print()中的局部变量a=30,b=20.0,结论,:,局部变量的,作用范围是声明该变量的方法或某一方法的程序块内,,,不能在其它地方引用。,25,格式:,数据类型 变量名,=,值,;,或,数据类型 变量名,1=,值,1,变量名,k=,值,k ;,例如:,int sum=0;,变量初始化,变量的初始化是一个容易出错的问题,现有如下 结论:,成员变量如果不初始化,则取默认值;,局部变量必须初始化,否则将出错。,26,变量初始化,(,续,),各种数据类型的默认值:,变量类型,默认值,变量类型,默认值,byte,0,short,0,int,0,long,0L,float,0.0f,double,0.0d,char,u0000,boolean,false,引用类型,null,27,变量的引用,内存分配:变量类型不同,保存地方也不同,使用上存在差异。,基本类型、对象句柄,对象,静态变量,常量,流式文件,28,变量的引用,(,续,),引用方式:,传值引用:主要针对基本数据类型,特点:传递变量的实际值,是原值的一个拷贝,一个变量值的改变不会影响到另一个变量的值。,传址引用:主要针对对象操作,以后介绍。,29,数据类型转换,数字精度,/,两个,byte,型数据相加,public class ByteAdd,public static void main(String args,),byte a=10;,byte b=100;,byte c;,c=a+b;,System.out.println(a+b+=+c);,ByteAdd.java:6:,可能损失精度,找到:,int,需要:,byte,c=a+b;,1,错误,30,说明:,实线箭头表示没有信息丢失的转换,即是安全性转换;,虚线箭头表示有精度损失的转换,即是不安全性转换;,31,操作数转换规则,前一例出错原因分析:虽然,a,、,b,是,byte,类型,但是在进行,a+b,运算时已转换为,int,型,,int,型是不会自动转换为,byte,型的,若要转换则需要强制进行。,32,自动类型转换,(,又称隐式类型转换,),混合运算,时,,不同类型的数据先转化为同一类型,然后进行运算,,转换是从低级到高级的,也就是前面提到的安全转换:,低,-,高,byte,short,char int long float double,强制类型转换,(,又称显式类型转换,),当两种类型不兼容,或是要将数据从高级转换为低级,这种转换需要强制进行。,格式,:,(,目标类型,),值 例如:,c,=,(byte),(a+b);,说明:强制类型转换有可能丢失数据精度,是不安全的。,33,运算符,Java,的表达式是由操作数和运算符组成。根据操作数个数的不同,运算符可分为,:,单目运算符,:只有一个操作数,如:,-x,、,x+;,双目运算符,:有两个操作数,运算符位于操作数之间,如:,a+b,;,三目运算符,:只有一个,即为条件运算符,(?:),,该运算式由两个符号组成,它们把三个操作数分开。,Java,的运算符包括:算术运算符、自增自减运算符、关系运算符、逻辑运算符、位运算符、移位运算符、赋值运算符、条件运算符等,下面一一介绍。,34,算术运算符,有五个运算符:,运算符,+,,*,:含义与数学上的运算相同,不必重复,;,运算符,/(,除法,),:用法有些特别,它与操作数的类型有关,数据类型不同,运算结果也有差异,具体如下:,当操作数为整数时,进行除法取整运算,例如,,5/2,的结果为,2,;,当操作数为浮点数时,则是通常意义的除法,例如,,5.0/2.0,得到结果为,2.5,。,运算符,%(,取模,),:即求余数。例如,,5%2,的到结果为,1,。,35,算术运算符,(,续,),运算符,%,应用举例:,用来判断整数的奇偶性,设整数为,n,,,当,n,为奇数时,条件:,n%2=1,为,true;,当,n,为偶数时,条件:,n%2=0,为,true,。,自增,(+),、自减,(-),运算符,+,、,-,都是单目运算符,即只有一个操作数,。操作数是整型或浮点型变量。运算符既可以放在操作数前,(,如:,+x,,,-x),,也可以放在操作数后,(,如:,x+,,,x-),,分别称为前缀形式和后缀形式。,36,自增,(+),、自减,(-),运算符,(,续,),+,、,-,的作用:,使用操作数的值增、减,。可以用在循环语句中修改循环变量的值;,前缀与后缀形式的功能不同的:,+x,、,-x,表示:先使,x,的值增,(,或减,),,再使用,x,;,x+,、,x-,表示:先使用,x,,再使,x,的值增,(,或减,),。,下面以,+,为例进行说明,,-,运算符的用法类似的:,int x=10;,int y=+x,;,/x,的值先增加,即为,11,y,的值是变化后的,x,值,即为,11;,37,自增,(+),、自减,(-),运算符,(,续,),int a=10;,int b=a+,;,/,先使用,a,,再增加,1,,即,a,的值最后变为,11,而,b,的值是变化前的,a,值,即为,10,。,/程序片断,int x=10;,int a=x+x+;,System.out.println(a=+a);,System.out.println(x=+x);,int b=x+x;,System.out.println(b=+b);,System.out.println(x=+x);,程序运行结果:,a=20,x=11,b=23,x=12,38,关系运算符,有,6,个:含义与数学中的关系运算符相同,但要注意书写方法的不同。,(,特别提醒:不能将,=,写成,=),。,运算结果:,boolean,型,只能是,true,或,false,例如:,int x=3,y=4,z=5;,则,:,表达式,x和 b;,b=R!=r;,x=!a;,y=a,z=a|b;,中间结果:,a=false,b=true,x=!false,即,true,y=false&true,即,false,z=false|true,即,true,42,逻辑运算符,(,续,),“短路”现象,条件:,a.test1(0)&a.test2(2)&a.test3(2),后来就变为:,true&false&a.test3(2),,,a.test3(2),不再计算,即,“,短路,”,。,&运算中:,&,&,&,,只要,前面有一个表达式,的值为false,,则,整个表达式的值就为false,。后面各表达式的值就不再计算,因为它们的值不影响结果。,|运算中:,|,|,|,,只要,前面有一个表达式,的值为true,,则,整个表达式的值就为true,。后面各表达式的值也不用再计算,同样是因为它们的值不影响结果。,43,逻辑运算符,(,续,),几个等价式子:,!a=a,;,!(a&b)=!a|!b,;,!(a|b)=!a&!b,运算的优先级,(,即运算顺序,),!、,&,、,|,如何去构造逻辑表达式?,例:字符 ch 是英文字母或数字字符,大写字母:,ch=A&ch=a&ch=0&ch=A&ch=a&ch=0&ch=9),44,例:,int year;year,表示“年”,满足下列条件之一的年份是闰年:,(1),能被,4,整除但不能被,100,整除,;(2),能被,400,整除。,对应的条件:,(1)(year%4=0)&(year%100!=0),(2)(year%400=0),用,|,连接即可,(,条件之一,),即闰年条件:,(year%4=0)&(year%100!=0)|(year%400=0),非闰年条件:,!(,(year%4=0)&(year%100!=0)|(year%400=0),),45,位运算符,计算机中的数据是以二进制方式存储的,利用位运算符可以操作数据的“位”。,Java,中的位运算符有,4,个:,&,运算符,(,位,“,与,”,),:,0,1,1,0,1,1,0,1,&,0,1,0,0,1,0,0,1,1,1,0,0,1,0,1,1,46,位运算符,(,续,),|,运算符,(,位,“,或,”,),:,0,1,1,0,1,1,0,1,|,1,1,1,0,1,1,1,1,1,1,0,0,1,0,1,1,运算符,(,位,“,非,”,),:,0,1,0,0,1,1,1,1,1,0,1,1,0,0,0,0,运算符,(,位,“,异或,”,),:,0,1,1,0,1,1,0,1,1,0,1,0,0,1,1,0,1,1,0,0,1,0,1,1,47,位运算符,(,续,),由“异或”运算规则可知:,aa=0,,,a0=a,c=ab,a=cb,双方约定同一个,b,,可以用,运算进行加密、解密。,public class Encrypt,public static void main(String args),char ch1=,二,ch2=,点,ch3=,抓,ch4=,捕,;,char secret=x;,ch1=(char)(ch1secret);,ch2=(char)(ch2secret);,ch3=(char)(ch3secret);,ch4=(char)(ch4secret);,System.out.println(,密文,:+ch1+ch2+ch3+ch4);,ch1=(char)(ch1secret);,ch2=(char)(ch2secret);,ch3=(char)(ch3secret);,ch4=(char)(ch4secret);,System.out.println(,原文,:+ch1+ch2+ch3+ch4);,程序运行结果,:,密文,:,仴烁拫挭,原文,:,二点抓捕,48,移位运算符,有,3,种:,左移,:,ab,表示,将二进制形式的,a,逐位左移,b,位,最低位空出的,b,位补,0,;,例:int a=17;a2=68,即17扩大了2,2,=4倍。,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,a,a,b,表示将二进制形式的a逐位右移b位,最高位空出的b位补原来的符号位(即正数补0,负数补1);例:,int a=17;a2=17/2,2,=4,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,a,a2,无符号右移:,a,b,表示将二进制形式的a逐位右移b位,最高位空出的b一律补0。,例:,int a=17;,a,2=4,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,50,移位运算符,(,续,),说明:,适用数据类型,:byte,、,short,、,char,、,int,、,long,,对低于,int,型的操作数将先自动转换为,int,型再移位;,对于,int,型整数移位,ab,,系统先将,b,对,32,取模,得到的结果才是真正移位的位数;,对于,long,型整数移位时,ab,,则是先将移位的位数,b,对,64,取模,所得结果为真正移位的位数。,赋值运算符,(,最常用,),格式:变量,=,表达式,功能:先计算表达式的值,再赋给左边的变量,例如:,x=10;/,表示将数值,10,放入变量,x,申请的存储空间。,51,赋值运算符,(,续,),复合赋值运算符:变量,运算符,=,表达式,例如:,x%=10;,与,x=x%10,等效,运算顺序:,从右向左,例如:,a=b=c=0;,与,c=0,b=0,a=0,等效,52,条件运算符,(,三目运算符,),格式:条件,?,值,1,:,值,2,执行过程:若条件为,true,就取,值,1,,否则取,值,2,。,例如:设,x,、,y,是,double,型数据,则:,y=(x=0)?x:(-x),;,/y,取,x,的绝对值,例如:设,a,、,b,、,c,是三个整数,则:,c=(a=b)?a:b,;,/c,取,a,、,b,中的较大数,请问:如何表示,i,、,j,、,k,三个整数的最小值?,(,提示:先求出两个数中的较小值,再与第三个数比较,),答案,:,int temp=(i=j)?i:j;,temp=(tempk)?temp:k;,53,逗号运算符,格式:表达式,1,表达式,2,;,例如:在,for,循环语句中,给,i,,,j,赋初值及每次循环之后修改它们的值:,for(i=0,j=10;i,左,+,、,-,、,、,!,左,-,右,*、,/,、,%,左,-,右,+,、,-(,减,),左,-,右,、,左,-,右,、,=,、,instanceof,左,-,右,=,、,!=,左,-,右,&,左,-,右,左,-,右,|,左,-,右,&,左,-,右,|,右,-,左,?:,右,-,左,=,、*,=,、,/=,、,%=,、,+=,、,-=,、,=,、,=,、,&=,、,=|=,55,表达式,概念:由运算符和操作数构成的序列,例如:,a,5.0+a,(a-b)*c-4,i 1600),System.out.println(根据税法,您应该交纳个人所得税。);,第一次运行结果:,请输入您的月工资,(,单位,:,元,):,1234.5,您的月工资为,:1234.5,元,第二次运行结果:,请输入您的月工资(单位:元):,2400,您的月工资为:2400.0元,根据税法,您应该交纳个人所得税。,66,例:输入成绩,判断是否及格?,/main()方法片断,public static void main(String args)throws Exception,float score;,InputStreamReader in=new InputStreamReader(System.in);,BufferedReader br=new BufferedReader(in);,System.out.println(,请输入成绩,:);,String s=br.readLine();,score=Float.parseFloat(s);,System.out.println();,System.out.println(,成绩为,:+score+,分,);,if(score=60),System.out.println(,恭喜你,通过考试了,!);,else,System.out.println(,很遗憾,考试成绩不及格,!);,第一次运行结果:,请输入成绩:,61,成绩为:61.0 分,恭喜你,通过考试了!,第二次运行结果:,请输入成绩:,58,成绩为:58.0 分,很遗憾,考试成绩不及格!,67,例:计算分段函数的值,/,用双分支语句计算分段函数的值,import javax.swing.JOptionPane;,public class Calculate1,public static void main(String args),double x,y;,String s=JOptionPane.showInputDialog(,请输入,x,的值,:);,x=Double.parseDouble(s);,if(x=-10)&(x=90),System.out.println(,等级,:,优秀,);,else if(score=80),System.out.println(,等级,:,良好,);,else if(score=70),System.out.println(,等级,:,中等,);,else if(score=60),System.out.println(,等级,:,及格,);,else,System.out.println(,等级,:,不及格,!);,程序运行结果:,请输入成绩:,88,成绩为:88.0 分,等级:良好,70,例:计算分段函数的值,/,用多分支语句计算分段函数的值,import javax.swing.JOptionPane;,public class Calculate2,public static void main(String args),double x,y;,String s=JOptionPane.showInputDialog(,请输入,x,的值,:);,x=Double.parseDouble(s);,if(x -5),y=-x;,else if(x 5),y=,Math.sin(x,);,else,y=Math.,exp,(,-,x);,JOptionPane.showMessageDialog(null,x=+x+n,+,函数值为,:+y);,71,switch,语句,引进的目标:在处理多分支结构时,让程序更加清晰、易懂,switch,(,表达式,),case,常量表达式1,:,语句,1;,break;,case,常量表达式2,:,语句,2;,break;,default:,语句n+1,;,break;,72,switch,语句,(,续,),说明:,switch,后面的,表达式,的返回值必须是下述几种类型之一:,int,byte,char,short,,不能为,long,、,float,、,duble,类型;,case,子句中的,值,必须是常量表达式,且所有,case,子句中的值应是不同的;,default,子句是可选的;,break,语句用来在执行完一个,case,分支后使程序跳出,switch,语句块,如果某个,case,分支后没有,break,语句,程序将不做比较而直接执行下一个分支。,73,switch,语句,(,续,),执行过程,计算出,表达式,的值,现假定为,M,;,依次计算出每个,case,后的,各常量表达式的值,,假设依次为,M1,M2,;,让,M,依次同,M1,M2,进行比较,一旦遇到,M,与某个值相等,则就执行对应,case,子句的语句,假若没有碰到,break,语句,将一直执行到,右,为止才结束整个,switch,语句的执行;如果,M,与所有常量值都不同,则当带有,default,部分时,就执行该部分语句,否则不执行任何操作。,74,例:输入成绩,输出等级(用switch实现),/,通过控制台输入成绩,输出等级,(,用,switch,实现,),import java.io.*;,public class Score3,public static void main(String args)throws Exception,float score;,InputStreamReader in=new InputStreamReader(System.in);,BufferedReader br=new BufferedReader(in);,System.out.println(,请输入成绩,:);,String s=br.readLine();,score=Float.parseFloat(s);,System.out.println();,System.out.println(,成绩为,:+score+,分,);,75,例:输入成绩,输出等级(用switch实现)(续),switch(int)(score/10),case 10:,case 9:,System.out.println(,等级,:,优秀,);,break;,case 8:,System.out.println(,等级,:,良好,);,break;,case 7:,System.out.println(,等级,:,中等,);,break;,case 6:,System.out.println(,等级,:,及格,);,break;,default:,System.out.println(,等级,:,不及格,!);,程序运行结果:,请输入成绩:,45,成绩为:45.0 分,等级:不及格!,76,循环结构,:根据条件,重复执行某一语句块,重复的次数根据条件决定。,循环结构的组成,循环控制部分,循环体,(,反复执行语句,),变量初始化,如:,i=1,条件判断,如:,i=100?,修改变量,如:,i+,77,for(,表达式,1;,表达式,2;,表达式,3),语句块;,for,语句,一般格式,执行过程,表达式,2,?,表达式,1,执行循环体,为,true,时,为,false,时,表达式,3,78,判断下列循环结构中,循环体的执行次数,i:1,2,100,101(x),共,100,次,for(int i=1;i=100;i+),System.out.println(*);,i:0,2,98,100(x),共,50,次,for(int i=0;i 0;i-),System.out.println(*);,i:1,0,-1,-2,死循环,(,永远不会停止,),for(int i=1;i=100;i-),System.out.println(*);,79,例,:,求,n!=1*2*,*n(n,的值由键盘输入,),连乘积的要点,:,初值,:p=1;,循环体,:p=p*i,(,设,p,为存放结果变量,i,为循环变量,),80,/,计算求,n!=1*2*n,值,(n,的值由键盘输入,),import java.util.*;,public class Factorial,public static void main(String args),int n;,double p=1;,/JDK 1.5 开始提供了一个Scanner类,可以从键盘输入各种类型的值,/避免了将字符串转换数值型的麻烦,Scanner sc=new Scanner(System.in);/,创建,Scanner,对象,System.out.print(,请输入,n,的值,:);,n=sc.nextInt();,/,输入,int,型数据,sc.close();/,关闭,sc,for(int i=2;i=n;i+),p=p*i;,System.out.println(n!=+p);,程序运行结果:,请输入n的值:5,n!=120.0,当,n,较大时,可能出现数据溢出,!,81,分类统计,(,用到分支语句,),例,:,输入,10,个学生成绩,分别统计成绩在,85-100,分,60,85,分和,60,分以下,各分数段的人数,.,要点,:,用三个整型变量,n85,、,n60,、,n0,来存放分类统计结果,它们的初值均为,0,;,用循环来输入成绩,分类统计,(,用,ifelse,嵌套或,switch,语句,),,当成绩落入某一区间时,相应变量的值增加,1,。,82,/,程序主要片断,int n0,n60,n85;,float score;,n0=n60=n85=0;,Scanner sc=new Scanner(System.in);/,创建,Scanner,对象,for(int i=1;i=85)n85+;,else if(s
展开阅读全文

开通  VIP、SVIP  下载更划算
下载10份以上建议开通 VIP 会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        关注我们

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服