JAVA高级语言与程序设计-第二讲-01-基本数据类型 流程控制语句 数组讲述_第1页
JAVA高级语言与程序设计-第二讲-01-基本数据类型 流程控制语句 数组讲述_第2页
JAVA高级语言与程序设计-第二讲-01-基本数据类型 流程控制语句 数组讲述_第3页
JAVA高级语言与程序设计-第二讲-01-基本数据类型 流程控制语句 数组讲述_第4页
JAVA高级语言与程序设计-第二讲-01-基本数据类型 流程控制语句 数组讲述_第5页
已阅读5页,还剩179页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JAVA高级语言程序设计北京邮电大学计算机学院鄂海红62282747-601JDK-使用JDK开发 下载安装JDK 配置环境变量: JAVA_HOME,PATH,CLASSPATH 用记事本编写程序(注意源文件后缀.java) 用java编译器javac.exe,编译源程序,形成字节码文件.class 用java解释器java.exe,运行程序使用MyEclipse 开发 Java的集成开发环境 新建项目project 新建Java类 编写、编译Java源代码 运行Java程序本章课程内容Java语言基础 数据类型及表达式规则 流程控制语句 数组数据类型11 基本数据类型四类基本类型四类基本类

2、型整 型浮点型字符型布尔型Java数据类型可分为两大类: 基本数据类型、引用数据类型。基本数据类型:由一种简单数据构成的数据类型,可直接参与该类型所允许的运算。1 基本数据类型三类引用类型三类引用类型数组 类 接口 Java数据类型可分为两大类: 基本数据类型、引用数据类型。引用数据类型的变量保存包括地址的引用信息。数组 int x;/声明数据变量x = new int100; /使用new为数组分配空间x=null;/释放数据空间观察观察 内存状态变化情况内存状态变化情况存的是地址信息-引用深入理解编程的内存操作机理编程的本质,就是对内存中数据的访问和修改程序所用的数据都会保存在内存中所以程

3、序通过变量方式来代表某一小块内存,变量都有名字进行区分程序对变量赋值,实际就是把数据装入该变量所代表的内存区程序读取变量的值,实际就是从该变量所代表的内存区取值的过程变量相当于一个有名称的容器,该容器用于装各种不同类型的数据Java栈内存&堆内存Java 把内存划分成:栈内存,堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配 堆内存用来存放由 new 创建的对象和数组Java 的基本数据类型数据类型数据类型关键字关键字占用位数占用位数缺省数值缺省数值 取值范围取值范围 布尔型boolean 8 false true、false 字节型 byte 8 0

4、-128127 字符型字符型 char 16 u 0000 u 0000 u FFFF 短整形 short 16 0 -3276832867 整 形 int 32 0 长整形 Long 64 0 浮点型 float 32 0.0F 双精度 型 double 64 0.0D-21474836482147483647-922337203685477580892233720368547758071.40129846432481707e-453.40282346638528860e+384.94065645841246544e-3241.79769313486231570e+308d系统为变量分配的存

5、储空间byte:内存8位 -128(-27)127 (27-1)short:内存16位-32768 (-215) 32767 (215-1)int:内存32位 -2147483648(-231) 2147483647 (231-1)long:内存64位 (-263) (263-1)Java 的基本数据类型数据类型数据类型关键字关键字占用位数占用位数缺省数值缺省数值 取值范围取值范围 布尔型boolean 8 false true、false 字节型 byte 8 0 -128127 字符型字符型 char 16 u 0000 u 0000 u FFFF 短整形 short 16 0 -3276

6、832867 整 形 int 32 0 长整形 Long 64 0 浮点型 float 32 0.0F 双精度 型 double 64 0.0D-21474836482147483647-922337203685477580892233720368547758071.40129846432481707e-453.40282346638528860e+384.94065645841246544e-3241.79769313486231570e+308d-21474836482147483647-922337203685477580892233720368547758071.40129846432

7、481707e-453.40282346638528860e+384.94065645841246544e-3241.79769313486231570e+308dbyte是用来处理未经加工的二进制数据的数据类型每个byte型的常量或变量中包含8位(bit)二进制信息-21474836482147483647-922337203685477580892233720368547758071.40129846432481707e-453.40282346638528860e+384.94065645841246544e-3241.79769313486231570e+308dJava 的基本数据类

8、型数据类型数据类型关键字关键字占用位数占用位数缺省数值缺省数值 取值范围取值范围 布尔型boolean 8 false true、false 字节型 byte 8 0 -128127 字符型字符型 char 16 u 0000 u 0000 u FFFF 短整形 short 16 0 -3276832867 整 形 int 32 0 长整形 Long 64 0 浮点型 float 32 0.0F 双精度 型 double 64 0.0DJava采用了一种新的国际标准编码方案Unicode编码无论汉字还是外文字符都可以统一用一个字符表示。无论汉字还是外文字符都可以统一用一个字符表示。每个Unic

9、ode码占用16个比特位,包含的信息量比ASCII码多了一倍字符集:ASCII、Unicode严格说来,计算机无法保存电影、图片、字符,只能保存二进制码因此,电影、图片、字符都需要先转化为二进制码,再保存对于保存字符,设计之初就是直接把所有需要保存的字符编码,当计算机要保存某个字符时,只需要将该字符的编号转换为二进制码来保存字符集:就是所有字符的编号组成总和早期,美国人给英文字符、数字、标点符号等字符进行了编号,并认为字符大概就100多个,只用一个字节(8位,256个字符编号)进行字符编号即可,即ASCII字符集后来,亚洲国家纷纷为本国文字编号,制定本国字符集,但字符集直接不兼容,于是美国人又

10、为世界上所有书面语言的字符进行了统一编号,这次用了2个字节(16位,支撑65536个字符编号),即Unicode字符集-21474836482147483647-922337203685477580892233720368547758071.40129846432481707e-453.40282346638528860e+384.94065645841246544e-3241.79769313486231570e+308dJava 的基本数据类型数据类型数据类型关键字关键字占用位数占用位数缺省数值缺省数值 取值范围取值范围 布尔型boolean 8 false true、false 字节型

11、byte 8 0 -128127 字符型字符型 char 16 u 0000 u 0000 u FFFF 短整形 short 16 0 -3276832867 整 形 int 32 0 长整形 Long 64 0 浮点型 float 32 0.0F 双精度 型 double 64 0.0Dchar变量的取值可以使用字符常量char变量的取值也可用整型常数,u前缀u 0000 u FFFF字符常量是用单引号括起的单个字符A a +Java 的基本数据类型数据类型数据类型关键字关键字占用位数占用位数缺省数值缺省数值 取值范围取值范围 布尔型boolean 8 false true、false 字节

12、型 byte 8 0 -128127 字符型字符型 char 16 u 0000 u 0000 u FFFF 短整形 short 16 0 -3276832867 整 形 int 32 0 长整形 Long 64 0 浮点型 float 32 0.0F 双精度 型 double 64 0.0D-21474836482147483647-922337203685477580892233720368547758071.40129846432481707e-453.40282346638528860e+384.94065645841246544e-3241.79769313486231570e+30

13、8d使用int变量时要注意它的取值范围应使变量的实际取值在这个范围内否则就会出现溢出Java 的基本数据类型数据类型数据类型关键字关键字占用位数占用位数缺省数值缺省数值 取值范围取值范围 布尔型boolean 8 false true、false 字节型 byte 8 0 -128127 字符型字符型 char 16 u 0000 u 0000 u FFFF 短整形 short 16 0 -3276832867 整 形 int 32 0 长整形 Long 64 0 浮点型 float 32 0.0F 双精度 型 double 64 0.0D-21474836482147483647-92233

14、7203685477580892233720368547758071.40129846432481707e-453.40282346638528860e+384.94065645841246544e-3241.79769313486231570e+308dfloat和double都是浮点数据类型程序中用来表示小数浮点型数据所占用的位数越多它所表示的小数的精确度就越高Java 的基本数据类型数据类型数据类型关键字关键字占用位数占用位数缺省数值缺省数值 取值范围取值范围 布尔型boolean 8 false true、false 字节型 byte 8 0 -128127 字符型字符型 char 1

15、6 u 0000 u 0000 u FFFF 短整形 short 16 0 -3276832867 整 形 int 32 0 长整形 Long 64 0 浮点型 float 32 0.0F 双精度 型 double 64 0.0D-21474836482147483647-922337203685477580892233720368547758071.40129846432481707e-453.40282346638528860e+384.94065645841246544e-3241.79769313486231570e+308d默认的浮点类型为double类型的数据并占用64位在常数最后

16、有一个字母“f”或“F”,则表示这是一个float类型的常数;若在常数最后有一个字母“d”或“D”,则表示为double类型。在程序中使用浮点数的常数时一般用科学计数法来表示比如 3.14E3表示3140,3.14E-2表示0.0314。浮点数在内存中的表示方式 Java 的基本数据类型数据类型关键字占用位数缺省数值 取值范围 布尔型boolean 8 false true、false 字节型 byte 8 0 -128127 字符型 char 16 u 0000 u 0000 u FFFF 短整形 short 16 0 -3276832867 整 形 int 32 0 长整形 Long 64

17、 0 浮点型 float 32 0.0F 双精度 型 double 64 0.0D-21474836482147483647-922337203685477580892233720368547758071.40129846432481707e-453.40282346638528860e+384.94065645841246544e-3241.79769313486231570e+308d与具体的软硬件平台环境无关各种数据类型占用固定的内存长度Java 的基本数据类型数据类型关键字占用位数缺省数值 取值范围 布尔型boolean 8 false true、false 字节型 byte 8 0

18、-128127 字符型 char 16 u 0000 u 0000 u FFFF 短整形 short 16 0 -3276832867 整 形 int 32 0 长整形 Long 64 0 浮点型 float 32 0.0F 双精度 型 double 64 0.0D-21474836482147483647-922337203685477580892233720368547758071.40129846432481707e-453.40282346638528860e+384.94065645841246544e-3241.79769313486231570e+308d使得各种数据类型的变量的

19、取值总是确定的每种数据类型都对应一个缺省的数值Java 的基本数据类型数据类型关键字占用位数缺省数值 取值范围 布尔型boolean 8 false true、false 字节型 byte 8 0 -128127 字符型 char 16 u 0000 u 0000 u FFFF 短整形 short 16 0 -3276832867 整 形 int 32 0 长整形 Long 64 0 浮点型 float 32 0.0F 双精度 型 double 64 0.0D-21474836482147483647-922337203685477580892233720368547758071.401298

20、46432481707e-453.40282346638528860e+384.94065645841246544e-3241.79769313486231570e+308d体现了Java的跨平台特性和安全稳定性应按原则命名标识符才能被语法认可1标识符 2 标识符与关键字 程序中的类名、方法名、方法的参数名,都是标识符。 1) 标识符可由字母、数字和特殊字符下划线( _ )、美元符号( $ )组合而成。 2) 标识符必须以字母、下划线或美元符号开头。 3) Java是大小写敏感的语言,标识符区分大小写。1标识符 2 标识符与关键字 1) 标识符可由字母、数字和特殊字符下划线( _ )、美元符号

21、( $ )组合而成。 2) 标识符必须以字母、下划线或美元符号开头。 3) Java是大小写敏感的语言,标识符区分大小写。1标识符 class和Class分别代表不同的标识符2 标识符与关键字 1) 标识符可由字母、数字和特殊字符下划线( _ )、美元符号( $ )组合而成。 2) 标识符必须以字母、下划线或美元符号开头。 3) Java是大小写敏感的语言,标识符区分大小写。1标识符 2 标识符与关键字 尽量使标识符在一定程度上反映它所表示的变量、常量、对象或类的意义。1标识符 2 标识符与关键字 如:x1,$_23,_www 都是合法的标识符 如: 123_a,4$,int 都是不合法的标识

22、符 2 常量一经建立,在程序运行的整个过程中都不会改变常量有两种形式:u 直接常量:在程序中直接引用的常量,包括数值型(整数123、浮点数3.14)和非数值型(字符常量a、字符串常量”ABC”、布尔常量true);u 符号常量:保存在程序中不能改变的数据,常量名是标识符,采用关键字final声明 ; final int MAX=10; 常量标识符全部用更大些字母2 常量十进制的整型常量首位不能为0;八进制的整型常量用以0开头的数字表示:如: 016代表十进制的数字14;十六进制的整型常量用0 x开头的数值表示:如: 0 x2E代表十进制的数字46。整型常量3 浮点常量一、 一般浮点常量用加后缀

23、的F、f表示: 如: 19.6F 557.6f 二、 双精度浮点常量用加后缀的D或d表示: 如: 2.536D 65542.2d 3.1415不加后缀的表示4字符常量 一、该字符可以直接是拉丁字母表中的字符。 二、也可以是转义符。 三、还可以是要表示的字符所对应的八进制数或Unicode码。用一对单引号括起的单个字符表示如 a,Z,8,#转义符是一些有特殊含义、很难用一般方式表达的字符用反斜线()开头后面跟着一个字符来表示某个特定的转义符引用方法引用方法对应对应Unicode码码 意义意义 h u 0008 退格退格 t u 0009水平制表符水平制表符tab n u 000a 换行换行 f

24、u 000c 表格符表格符 r u 000d 回车回车 ” u 0022 双引号双引号 u 0027 单引号单引号 u 005c 反斜线反斜线转转 义义 符符表 1.2 本章课程内容Java语言基础 Java程序基本组成 数据类型及表达式规则 字符串5字符串常量用双引号括起的一串若干个字符可以是0个可以包括转义符5字符串常量如: “Hello” “ ” “How are you? 1234”用双引号括起的一串若干个字符5字符串常量 “+” 可以把两个(或更多的)字符串常量串连接在一起,组成一个更长的字符串。比如: “Hello”+“n”Hellon结 果3 变量在程序的运行过程中,数值可变的数

25、据通常用来记录运算中间结果或保存数据Java程序中的基本存储单元变量必须先声明后使用 声明变量包括指明变量的数据类型和变量的名称,必要时还可以指定变量的初始数值。3 变量如:boolean F1ag=false;char ch; String s = “abc”; 3 变量定义布尔型变量并初始化定义字符变量定义字符串变量并初始化3 运算符与表达式 算术运算符用来定义整型和浮点型数据的算术运算算术运算符3 运算符与表达式 算术运算符运算符种类双目运算符单目运算符三目运算符使用一个操作数+-运算符运算自增自减求相反数单目运算符算术运算中有三个单目运算符3 运算符与表达式 x+ +x 前置运算 表示

26、在使用x之前,先将x的值自动加1 x- -x后置运算 表示先使用x再将x的值加1 int x=1;int y=(+x)*2;运行后得到x=2,y=4如果把表达式改为:int x=1;int y=(x+)*2;运行后得到x=2,y=2x自增后的新的x值与2相乘表达式使用x原始的数值1与2相乘把结果赋给y,x再加1,得2int x=1;int y=(+x)*2;运行后得到x=2,y=4如果把表达式改为:int x=1;int y=(x+)*2;运行后得到x=2,y=2 单目运算符的位置不同,可改变整个表达式的值public class Exa1_3 public static void main(

27、String args) int x=5; int y1,y2; y1=+x; /先将x值加1变成6,再赋值给y1 y2=x-; /先将x的值赋值给y2,再把x的值减1System.out.println(“y1=”+y1 +“ y2=”+y2+” x=”+x);程序运行结果为:程序运行结果为:y1=6 y2=6 x=5y1=6 y2=6 x=5+-*/%运算符运算加减乘除取余双目运算符3 运算符与表达式 两个整数类型的数据做除法运算时,结果是截取商数的整数部分,而小数部分被截断。取余运算:适合 int、long、short 类型float和double不能取余例例 如如结果0 12结果0.5

28、 (float)1)2若希望保留小数部分:若希望保留小数部分:则应对除法运算的操作数做强制类型转换。3 3 运算符与表达式运算符与表达式 算术表达式 用算术符和括号连接起来符合java语法的式子,称之为算术表达式。如:a+20+(b-5)*3+c/9 运算结合的方向:从左到右从左到右 关系运算符比较两个表达式大小关系的运算 运算符运算符 运算运算= 等于等于 != 不等于不等于 大于大于 = 大于等于大于等于 y); boolean k=(x = 5);System.out.println(“z=”+z+“ k=”+k);程序运行结果为:z=false k=true关系运算符的结合方向都是关系

29、运算符的结合方向都是从左到右从左到右。关系运算符的优先级别:关系运算符的优先级别: =、!= != 低于低于 、=、 、=9)&(2!=3)表达式值为false(29)|(84)表达式的值为true【程序案例】public class LeapYear public static void main(String args) int year=2008; boolean leap = year%400=0 | year%100!=0 & year%4=0; System.out.println(year+ is a leap year, +leap); 程序运行结果为:程序运行

30、结果为:2008年是闰年!年是闰年!不能被100整除但能被4整除的年份或能被400整除的年份是闰年赋值运算符赋值运算符为“=” 双目运算符 左边操作数必须是变量而不能是常量或表达式。“=”的结合方向是从右到左,此运算符的优先级较低。 赋值运算符赋值运算符为“=” 如:int x;x=4;/合法的赋值表达式表示将4赋值给变量x注意:“=”与“=”是不同的其他运算符三目条件运算符?:与C语言完全相同Java 条件运算符的一般形式是:x ? y : z 规则: 先计算表达式 x 的值; 若x为真,则整个三目运算的结果为表达式 y 的值; 若x为假,则整个运算结果为表达式 z 的值。参看下面的例子:

31、int x=5,y=3,Z=2; int k=x3 ? y : z;k取z的值,结果为2xy&!z例 如相当于(xy)&(!z)关系运算符的优先级高于逻辑运算符关于表达式是程序的基本组成单位之一运算符的优先级,决定了表达式中不同运算执行的先后顺序。运算符的结合性,决定了并列的相同运算的先后执行顺序。例例 如如相当于(x+y)+z右结合的右结合的“!”,!x对于左结合的对于左结合的 “+”,x+y+z相当于!(!x)优先级别 描述 运算符结合性1最高优先级 ()左/右2单目运算- ! + - 强制类型转换符右3算术乘除运算* / %左4算术加减运算+ -左5移位运算 左6大小关系

32、运算 =左7相等关系运算= !=左8非简洁与&左Java运算符的优先级与结合性优先级别 描述 运算符结合性9按位异或运算左/右10非简洁或,按位或|右11简洁与&左12简洁或|左13三目条件运算?:左14简单、复杂赋值= ; 运算符 =左Java运算符的优先级与结合性基本类型的转换 以下基本数据类型按精度从“低”到“高”排列顺序如下 : byte short int long float double当把级别低的变量的值赋给级别高的变量时系统自动完成数据类型的转换。例如:float x=100;如果输出x值,结果将是100.00。 当把一种基本数据类型变量的值赋给另一种基本类型

33、变量时,需要进行数据类型转换。把小瓶水装到大瓶里,直接装基本类型的转换 以下基本数据类型按精度从“低”到“高”排列顺序如下 : byte short int long float double当把级别高的变量赋给级别低的变量时,必须使用显式类型转换运算。转换的格式:(类型名)要转换的值;例如: int x=(int) 23.89; 强制转换运算导致精度的损失 long y=(long)34.98F;把大瓶水装到小瓶里,会损失精度,强制转换2流程控制语句结构化程序设计主张按照功能来分析系统需求,主要原则:自顶向下,逐步求精,模块化等首先采用结构化分析-需求分析,然后结构化设计-进行概要设计,详细

34、设计,最后结构化编程-实现系统结构化程序设计主张按功能把软件逐步细分-面向功能的程序设计方法每一个功能都负责对数据进行一次处理;每个功能接受一些数据,完成操作后输出一些数据设计最小设计单元是函数,每个函数负责完成一个功能,用以接受一些输入数据函数对这些输入数据进行处理并输出相应的输出数据。整个软件系统由一个个函数组成,其中作为程序入口函数的被成为主函数。主函数依次调用其他普通函数,普通函数之间一次调用,从而完成整个软件系统的功能。哲学or方法论主函数函数2函数1函数4函数3函数5调用调用调用调用调用结构化设计结构化设计自顶向下:分哪几个模块,再分子模块,再分到一个个函数结构化程序设计有如下两个

35、局限性:设计不够直观,与人类的思维方式不一样,开发者需要将客观世界模型分解成一个个功能,每个功能都用以完成一定的数据处理适应性差,可扩展性不强,由于结构化设计采用自顶向下的设计方式,所以当用户的需求发生变化的时候,或者实现方式需要修改的时候,都需要自顶向下的修改模块,这种方式的维护成本相当高主函数函数2函数1函数4函数3函数5调用调用调用调用调用采用面向对象方式开发的软件逻辑上的组成结构面向对象设计从现实世界中客观存在的事物出发来构建软件系统直接把现实中的事物抽象地表示为系统中的类,作为系统的基本构成单元这些系统软件的组件可以直接映射到现实中客观存在的事物采用面向对象的方式开发软件系统,其最小

36、的程序单元是类,这些类可以生成系统中的多个对象,这些对象直接映射客观世界各种事物面向对象的软件系统由多个类组成类代表了客观世界中具有某种特征的一类事物这类事物拥有内部状态数据,如人有身高,体重等面向对象比面向过程的编程粒度更大面向对象的程序单位是类而面向过程的程序单位则是函数Java代码结构 虽然Java是面向对象的 但是Java的方法(语句)里则是一种面向结构化的程序流 Java的整体构成:类 Java语句的流程控制语句体现三种结构化程序流赋值语句赋值语句变量声明语句变量声明语句类声明语句类声明语句 方法声明语句方法声明语句流程控制语句流程控制语句消息传送语句消息传送语句 注释语句注释语句

37、常见的语句有以下几种:常见的语句有以下几种:流程控制语句将决定程序的执行顺序if语句语句switch语句语句for语句语句while语句语句do-while语句语句Java语句程序的基本结构操作之间的执行次序就是程序的控制结构。1996年,计算机科学家证明了这样的事实:任何简单或者复杂的算法都可以由顺序结构,选择结构和循环结构三个接本的结构组成。所以,这三种机构就被成为程序设计的基本结构,也是结构化程序设计必须采用的结构。S1S2ab顺序结构选择结构循环结构一、 选择结构(条件控制结构)单选择结构双选择结构多选择结构形式1单选泽结构 if(条件) 语句块 ;一、选择结构也可以是一个复合语句语句

38、块可以是用分号结尾的一个简单语句“条件” 是一个逻辑表达式若该表达式的值为真,则执行紧跟其后的“”内的“语句块” 不带else分支的 if 语句表达式语句块FT例如例如: 判断某次测验的成绩是否通过。判断某次测验的成绩是否通过。 if(grade=60) System.out.println(“通过通过!”);其流程图其流程图:形式 双选择结构if(条件) 语句块1 else 语句块2 一、选择结构根据条件来判断将进入具体哪一个分支完整的 if 语句若该表达式的值为真则执行“语句块1”否则执行else后的“语句块2” 表达式语句块语句块TF if(grade=60) System.out.pr

39、intln(“通过通过!”); else System.out.println(“你的成绩是:你的成绩是: ”+grade); System.out.println(“不及格!不及格!”);例例 如如: 判断某次测验的成绩是否通过判断某次测验的成绩是否通过表达式语句块语句块TF if(grade=60) System.out.println(“通过通过!”); else System.out.println(“你的成绩是:你的成绩是: ”+grade); System.out.println(“不及格!不及格!”);例例 如如简单语句表达式语句块语句块TF if(grade=60) Syste

40、m.out.println(“通过通过!”); else System.out.println(“你的成绩是:你的成绩是: ”+grade); System.out.println(“不及格!不及格!”);例例 如如else分支的分支的复合语句 if(grade=60) System.out.println(“通过通过!”); else System.out.println(“你的成绩是:你的成绩是: ”+grade); System.out.println(“不及格!不及格!”);例例 如如else分支的分支的复合语句if 和else 后面的复合句里如果只有一个语句, 可以省略不写,但为了增

41、强程序的可读性最好不要省略。 if(grade=60) System.out.println(“通过通过!”); else System.out.println(“你的成绩是:你的成绩是: ”+grade); System.out.println(“不及格!不及格!”);例例 如如if if 和和else else 后面的复合句里如果只有一个语后面的复合句里如果只有一个语句句, , 可以省略不写可以省略不写, ,但为了增强程序的可读性但为了增强程序的可读性最好不要省略。最好不要省略。有时为了编程的需要有时为了编程的需要else或或if 后面的大括号里可后面的大括号里可以没有语句以没有语句pub

42、lic class Results public static void main(String args) int score=45; if(score=60) if(score=60) System.out.println( System.out.println(你通过了考试!你通过了考试!);); else else System.out.println( System.out.println(你的成绩是你的成绩是+score);+score); System.out.println( System.out.println(你没有通过此次考试你没有通过此次考试, ,加油加油啊啊!);!)

43、; 复合语句 if(表达式1)else if (表达式表达式2)else if (表达式表达式3) else if(表达式表达式n)else语句体语句体1语句体语句体2语句体语句体3语句体语句体n语句体语句体n +1形式 3 多选择结构流程:表达1表达2表达3表达n语句体2语句体3语句体n语句n+1语句体1TFFTTT如,要求根据考试成绩给出相应等级:当考试成绩大于90时打印A,当成绩介于8089之间打印B,当成绩介于7079之间打印C,当成绩介于6069之间打印D,其他则打印E。代码表示如下:if(grade=90) System.out.println(“A”);else if(grade

44、=80) System.out.println(“B”); else if(grade=70) System.out.println(“C”); else if(grade=60) System.out.println(“D”); else System.out.println(“E”);源源 程程 序序else分支分支中嵌套 if语句if语句的匹配的缩进格式 缩进格式可以使程序更直观。 但Java编译器总是: 将else与距其最近的未配对的if相匹配,除非用花括号括起来。用if或if/else或它们的嵌套也可使程序实现多路分支,但容易出现下面的问题: 可读性差 有悖于结构化程序设计的要求解决

45、问题的方法解决问题的方法:采用switch语句。switch (表达式表达式) case 常表常表1: 语句语句1; break; case 常表常表2 : 语句语句2; break; case 常表常表n : 语句语句n; break; default: 语句语句n+1; 一般形式为一般形式为:break语句: 使之跳出switch结构。switch (表达式表达式) case 常表常表1: 语句语句1; break; case 常表常表2 : 语句语句2; break; case 常表常表n : 语句语句n; break; default: 语句语句n+1; 一般形式为一般形式为:执行时,

46、首先计算表达式的值注意,这个表达式的值必须是byte,char,short或int类型的整型值同时还应与各个case分支的判断值的类型相一致。switch (表达式表达式) case 常表常表1: 语句语句1; break; case 常表常表2 : 语句语句2; break; case 常表常表n : 语句语句n; break; default: 语句语句n+1; 一般形式为一般形式为:否则,继续将表达式的值与下一个case分支比较依此类推switch (表达式表达式) case 常表常表1: 语句语句1; break; case 常表常表2 : 语句语句2; break; case 常表常

47、表n : 语句语句n; break; default: 语句语句n+1; 一般形式为一般形式为:执行时,首先计算表达式的值将表达式的值,先与第一个case分支的常表常表值相比较,若相同,程序将转入第一个分支的语句块; 当遇到break语句后,跳出switch结构。switch (表达式表达式) case 常表常表1: 语句语句1; break; case 常表常表2 : 语句语句2; break; case 常表常表n : 语句语句n; break; default: 语句语句n+1; 一般形式为一般形式为:若表达式与任一case分支都不同,则转向最后的default分支,若不存在defaul

48、t分支则跳出整个switch语句。1. 常量表达式的值必须互不相等,否则会有二异性。2. case顺序无关紧要。3. 不一定非用break不可,有时几种情况合并执行一组语句。注意注意: :switch (grade) case A : case B: case C: System.out.println(60n); break; case D: System.out.println(60n); break; 例如:例如: 若省略break,进入某一分支的执行流程将不加判断地继续执行后面case语句块中的代码,直到遇到一个break为止。 让我们将前面的根据考试成绩给出相应等级的例子改用swit

49、ch语句来实现,体会switch实现多路选择的简易之处。当考试成绩大于90时打印A,当成绩介于8089之间打印B,当成绩介于7079之间打印C,当成绩介于6069之间打印D,其他则打印E。 switch(grade10) Case 10: Case 9: System.out.println(“A”); break; Case 8: System.out.println(“B”); break; Case 7: System.out.println(“C”); break; Case 6: System.out.println(“D”); break;90grade100 60grade708

50、0grade9070grade80案例 Case 5: Case 4: Case 3: Case 2: Case 1: Case 0:System.out.println(“E”); break; default: System.out.println(“ERROR”); 不能匹配0grade60 循 环 结 构循 环 结 构循环结构表示程序反复执行某个或者某些操作直到某个条件为假(或者为真)时才停止当型结构 与 直到型结构 当型结构:“当条件为真的时候执行循环”,即先判断后执行,所以被成为当型循环 先判断条件,当条件为真的时才执行循环体,并且在循环体结束的时候自动返回到循环体的入口处,再次判

51、断循环条件,如果条件为假,则退出循环体到达流程的入口处。 直到型结构:“直到某个条件不成立才退出循环”,所以又称为直到型循环 从入口处直接执行循环体,循环体结束的时候判断条件,如果判断条件为假则跳出循环,如果为真则继续执行循环体后再判断。一、语法结构for (初始表达式;条件表达式; 循环表达式) for 循环属计算器控制的循环。语句体计算初始表达式的值判断条件表达式若条件表达式的值为真,则执行语句体执行语句体后计算循环表达式若条件表达式的值为假,则跳出循环体根据条件表达式是否为真,决定是否继续循环循环体可以是一个简单语句或是复合语句三个表达式之间用分号隔开计算初始表达式求条件表达式的值语句体

52、计算循环表达式for循环外的语句(假)(真)应知应知forfor语句的几种特例语句的几种特例 可以省略初始表达式;如:如: int i=0; for(;i100;i+);但须保留分号且在for之前必须给循环变量赋值应知应会应知应会 循环表达式亦可省略,但在循环体中必须有语句 来修改循环变量,以使条件表达式在某一时刻 为假而正常结束循环。例例: : for ( sum=0, i=1; i=100; ) sum=sum+i ; i+ ; 省略循环表达式 该语句来修改循环变量应知应会应知应会 若同时省略初始表达式,和循环表达式,则相当于while语句。相当于 while (i=100) sum+=

53、i; i+; 例例: for ( ; i=100; ) sum+=i; i+;省略循环表达式 省略初始表达式 应知应会应知应会初始表达式、循环表达式可以是逗号表达式。如: for (sum=0, i=1; i=100; i+, i+)相当于:sum=0; for (i=1; i=100; i=i+2)逗号表达式逗号表达式以使循环变量值在修改时可以对其它变量赋值 Java允许在for语句里定义多个变量,但它们必须具有同样的类型,且定义的变量只能在for结构体内使用。应知应会应知应会 条件表达式可以是关系表达式,也可以是数值表达式或字符表达式。只要值为真.即执行循环体.例: for (i=0; (

54、c=(char)System.in.read( )!=a; i+=c);条件表达式条件表达式应知应会应知应会WhileWhile语句语句初始表达式; while(条件表达式) 语句; 循环表达式; 专门的专门的当型当型循环语句循环语句先判断条件表达式的值若条件表达式的值为真,则执行语句体若条件表达式的值为假则跳出循环体while执行完毕循环体可以是一个简单语句或是复合语句应知应知3. 流程图流程图:表达式语句TF下一语句例如:例如:int n=0; while (n=10) n=n+1;应知应知 语句中应有使表达式为假的语句。 否则会出现无限循环死循环。若while后面的语句为复合语句, 必须

55、加 语句有可能一次也不执行注注:应知应知一、语法结构一、语法结构do语句体while(条件表达式);若条件表达式的值为真,则执行语句体否则结束循环先执行语句体再判断条件表达式是否为真,决定是否继续循环应知应知三、三、 流程流程语句表达式TF应知应知注注: 1、dowhile结构的作用与while基本相同。2、语句至少要执行一次。应知应知1. 对于同一问题, 三种循环可相互替代。2. 若循环次数、初始值、终止值不是明显地给出,可用while 或do while。以增强程序的结构化和可读性。二、几种循环比较二、几种循环比较应知应知3. 要防止无限循环死循环。4. 循环过程中,为了结束本次循环或跳出

56、整个循环。分别要用到continue和break语句。应知应知跳转语句算法与结构化程序设计用来实现程序执行过程中流程的跳转Java语言不支持无条件跳转的goto语句。Java的跳转语句有三个:break语句、continue语句return语句。 应知应知一、一、break 语句语句适用范围:适用范围: while 循环for 循环do/while 循环switch 分支作用:作用:无条件地跳出该结构应知应知请看下面的代码段 for(i=l;i100;i+) for(j=2;ji;j+) if(ij=0) break;提前跳出内循环 在内循环中在内循环中,当当if条件满足时,执行条件满足时,执行break跳跳出内循环出内循环,外循环继续直至不满足循环条件。外循环继续直至不满足循环条件。多重循环中使用break只是结束break所在的最近一层的循环注意应知应会应知应会for(i=l;i100;i+) if(i3=0) continue; System.out.println(i); 结束本次循环跳过下面语句条件满足,条件满足,即即i能被能被3整除整除功能是打印出1到100之间的所有不被3整除的数如:当if条件满足,即i能被3整除时,结束本次循环,跳过打印语句回到循环开头处,继续下一轮循环。应知应会应知应会语句的格式为: return 表达

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论