《(1.2)--2- Java语言基础面向对象程序设计.ppt》由会员分享,可在线阅读,更多相关《(1.2)--2- Java语言基础面向对象程序设计.ppt(147页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Chapter2 Java语言基础语言基础2本章要点本章要点1.变量的定量的定义;2.运算符的灵活使用;运算符的灵活使用;3.程序的三种基本程序的三种基本结构(构(顺序序结构、构、选择结构、构、循循环结构)的使用;构)的使用;4.数数组的定的定义及使用。及使用。学习目标学习目标1.掌握掌握变量、常量、表达式的概念,数据量、常量、表达式的概念,数据类型及型及变量的定量的定义方法;方法;2.掌握常用运算符的使用;掌握常用运算符的使用;3.掌握程序的掌握程序的顺序序结构、构、选择结构和循构和循环结构的构的定定义格式和灵活使用;格式和灵活使用;4.掌握数掌握数组的定的定义及使用方法;及使用方法;5.掌
2、握基本的掌握基本的输入入输出方法。出方法。32.1 标识符标识符n在在Java语言中包、言中包、类、接口、接口、对象、方法、象、方法、变量量等都有等都有对应的名称。的名称。标识符是用来符是用来标记这些名称的些名称的字符序列。字符序列。nJava中中标识符是以符是以字母字母、下划、下划线(_)、美元符号)、美元符号($)开开头,后面可以跟任意数目的字母、数字、下,后面可以跟任意数目的字母、数字、下划划线和美元符号。例如和美元符号。例如myName,My_name,Points,$points,_sys_ta。4标识符命名符命名规则:(1)Java中中标识符符不能以数字不能以数字开开头;(2)Ja
3、va对字母字母大小写敏感大小写敏感,例如,例如every和和EVERY代表不同代表不同的的标识符;符;(3)不能和关不能和关键字相同字相同,注意:,注意:标识符不能是关符不能是关键字,但是字,但是可以包含关可以包含关键字作字作为标识符的一部分。例如符的一部分。例如thisone是一个有是一个有效效标识符,但符,但this却不是,因却不是,因为this是一个是一个Java关关键字;字;(4)不能含有空格、不能含有空格、#等等非法字符。非法字符。52.1 标识符标识符例如:例如:identifier,_user,$value,Count1/为合法合法标识符符#user,1count,value,c
4、lass/为非法非法标识符符62.1 标识符标识符 Java关关键字是字是为编译器保留的、具有特定含器保留的、具有特定含义的的标识符,符,不能做不能做为变量、量、类或方法等的名称。所有的关或方法等的名称。所有的关键字都是小字都是小写的,若被大写写的,若被大写则不是关不是关键字。字。72.1 标识符标识符 Java语言中的分号言中的分号;、花括号、花括号、圆括号括号()()、空格空格 、圆点点 .都具有特殊的分隔作用,因此都具有特殊的分隔作用,因此统称称为分隔符。分隔符。82.1 标识符标识符2.1 标识符标识符-注释注释Java有有3种注种注释:单行、多行、文档注行、多行、文档注释/这是是单行
5、注行注释/*这是多行是多行注注释*/*这是文档注是文档注释*可以用可以用javadoc命令生成帮助文档命令生成帮助文档*/9/*authorAdministrator*2020年年3月月编写完成写完成*/publicclassPeople/*paramargs*/publicstaticvoidmain(Stringargs)/*下面完成下面完成输出出2行字符串的功能行字符串的功能*/System.out.println(第第1个字符串个字符串);/输出后出后换行行System.out.print(第第2个字符串个字符串);/输出后不出后不换行行10112.2 数据类型数据类型 Java的数据
6、的数据类型可以分型可以分为两大两大类型:型:n基本数据基本数据类型(型(简单数据数据类型)型)n引用数据引用数据类型(复合数据型(复合数据类型)型)122.2 数据类型数据类型13基本(简单)数据类型boolean1 字节或4字节(不确定)char 2 字节整数类型byte1 字节short2 字节int4 字节long8 字节浮点类型float4 字节double8 字节引用(复合)数据类型classinterface数组2.2 数据类型数据类型类型占用字节数表示数的范围整数类型byte1 字节-128,127short2 字节-32768,32767int4 字节-2147483648,2
7、147483647long8 字节-9223372036854775808,9223372036854775807浮点类型float4 字节约 -3.4E38,3.4E38double 8 字节约 -1.79E3084,1.79E3082.2.1 整数类型整数类型整型整型变量的定量的定义格式:格式:byteb1=127;byte b2=128;/错误,不能把,不能把int值赋给byte变量量shorts1=32767;shorts2=32768;/错误,不能把,不能把int值赋给short变量量inti=2147483647;longa1=2147483647;longa2=214748364
8、822L;/不加不加L出出错,因,因为超出了超出了int值的范的范围inti1=010;/i1=8inti2=0 x10;/i2=16152.2.1 整数类型整数类型说明:明:(1)Java中的整数是有符号数,即有正中的整数是有符号数,即有正负值的区分。的区分。(2)程序中的整数数)程序中的整数数值默默认是是int类型,如果需要型,如果需要书写写long型的型的值,则需要在数需要在数值后面添加字母后面添加字母L,大小写均可。,大小写均可。(3)程序中默)程序中默认整数是十整数是十进制数字,八制数字,八进制数字以数字制数字以数字0开开头,例如,例如016、034等,十六等,十六进制数字以数字制数
9、字以数字0和字母和字母x(不区分大小写不区分大小写)开开头,例,例如如0 xaf、0X12等。等。16【例【例2-1】计算光在指定的天数中算光在指定的天数中传播的距离(播的距离(以以公公里里为单位)。位)。publicclassTest1publicstaticvoidmain(Stringargs)intlightSpeed=300000;/定定义光速光速变量量:光一秒光一秒钟传播的距离播的距离30万万公里公里intdays=100;/100天天longdistance=lightSpeed*3600*24*days;System.out.println(光光+days+天天传播播+dist
10、ance+公里公里);172.2.2 浮点数据类型浮点数据类型n浮点数据浮点数据类型用来表示非整数的数型用来表示非整数的数值。Java有两种浮点有两种浮点类型:型:单精度浮点数和双精度浮点数,关精度浮点数和双精度浮点数,关键字字float表示表示单精度(精度(32位),而位),而double则表示双精度(表示双精度(64位)。位)。n浮点型浮点型变量的定量的定义格式:格式:数据数据类型(型(float或或double)变量名量名=值;18floata=1.2F,b=200.35f,c=2.3e7F;/c是是2.3乘以乘以10的的7次方次方注意:注意:float型要在数字尾部加型要在数字尾部加F
11、或或fdoublea=1.2D,b=200.35,c=2.3e7D;/c是是2.3乘以乘以10的的7次方次方注意:注意:double型要在数字尾部加型要在数字尾部加D或或d,也可以省略。,也可以省略。19float f1=11.3333;/错误,右,右边的的值默默认是是double类型,因型,因为不能将不能将double型型值赋给float变量量floatf2=11.3333F;/正确正确doubled1=2333.001;doubled2=2333.001D;202.2.3 布尔布尔数据类数据类型型Java把把逻辑值用布用布尔型(型(boolean)表达。)表达。布布尔数据数据类型(型(bo
12、olean)用来表示)用来表示逻辑值(真、假)。(真、假)。Java中布中布尔型数据只有两个型数据只有两个值:true(真)或(真)或false(假)。(假)。212.2.3 布尔布尔数据类数据类型型布布尔型型变量的定量的定义格式:格式:boolean变量名量名=值;booleana;a=false;/定定义布布尔型型变量量a为falsebooleanb=true;/定定义布布尔型型变量量b为true222.2.4 字符型字符型n字符型(字符型(char)用来存)用来存储如字母、数字、如字母、数字、标点符号点符号及其他符号之及其他符号之类的的单引号引起来的引号引起来的单个字符,例如个字符,例如
13、a,B等。等。n字符型字符型变量的定量的定义格式格式:char变量名量名=值;n注意:注意:java在内存中是把字符型在内存中是把字符型值当做数字保存的,当做数字保存的,保存的是保存的是该字符的字符的unicode码23例如例如:chara=b;/定定义一个初一个初值为 b 的字符型的字符型变量量a。charb=中中,c=X;也可以使用整数来表示字符,例如:也可以使用整数来表示字符,例如:charx=97;/相当于相当于x=a,字符字符a的的unicode码是是97242.2.5 转义字符转义字符25JavaJava以反斜杠(以反斜杠()开头将其后字符转变为另外的含义)开头将其后字符转变为另外
14、的含义例如:例如:charch1=r;/ch1保存的是回保存的是回车符符charch2=;/ch2保存的是保存的是单引号字符引号字符charch3=u0041;/ch3保存的是字符保存的是字符A,A的的unicode编码是是65262.2.6 数据类型转换数据类型转换l使用使用变量存量存储每个价每个价钱l使用算使用算术运算符运算符进行行计算算四个朋友见面,为加深彼此感情,欢聚五行四个朋友见面,为加深彼此感情,欢聚五行山酒楼,一通吃喝,菜单如下:山酒楼,一通吃喝,菜单如下:老白干老白干2瓶:瓶:20元;狮子头:元;狮子头:25元;红烧鱼头:元;红烧鱼头:15元;元;蕃茄排骨汤:蕃茄排骨汤:35元
15、;砂锅鱿鱼:元;砂锅鱿鱼:12元元饭后四人决定饭后四人决定AA制,每人应该支付多少钱?制,每人应该支付多少钱?分析分析分析分析2.2.6自动类型转换自动类型转换默默默默进行的行的转换publicclassPaypublicstaticvoidmain(Stringargs)intwine=20;/酒钱酒钱intlionhead=25;/狮子头价钱狮子头价钱intbraisedFish=15;/红烧鱼头价钱红烧鱼头价钱intribs=35;/排骨汤价钱排骨汤价钱intsquid=12;/红烧鱿鱼价钱红烧鱿鱼价钱doubleprice;/每人应该支付的钱数每人应该支付的钱数price=(wine+
16、lionhead+braisedFish+ribs+squid)/4;System.out.println(每人应该支付:每人应该支付:+price+元!元!);int类型的结果赋值类型的结果赋值给给double类型类型自动类型转换是指从低级到高级由编译器自动完成的类型转自动类型转换是指从低级到高级由编译器自动完成的类型转换,不需要在程序中编写代码。转换规则如下:换,不需要在程序中编写代码。转换规则如下:byte-short-int-long-float-doublebyte-short-int-long-float-doublechar-int-long-float-doublechar-i
17、nt-long-float-double例如:例如:byte b=4;byte b=4;int x=b;/int x=b;/正确,正确,intint比比bytebyte高级,自动把高级,自动把b b的值转换为的值转换为intint,再赋值给再赋值给x x。自动类型转换自动类型转换强制类型转换强制类型转换publicclassBigToSmallpublicstaticvoidmain(Stringargs)doublescore=87.5;intnewScore=(int)score;System.out.println(小新的考试成绩归整后为:小新的考试成绩归整后为:+newScore);强
18、制变型为强制变型为int型型强制类型转换会丢失精度,使用时需注意。强制类型转换会丢失精度,使用时需注意。强制制类型型转换的格式是:(数据的格式是:(数据类型)型)变量名量名值得注意的是,指定得注意的是,指定变量本身不会量本身不会发生任何生任何变化。化。2.3 运算符运算符运算符运算符规定了数据定了数据计算的算的规则。运算符有两种分。运算符有两种分类方方法:按运算符功能分法:按运算符功能分类、按运算符、按运算符连接数据个数分接数据个数分类。n运算符按功能分运算符按功能分为7种:种:赋值运算符、算运算符、算术运算符、关运算符、关系运算符、系运算符、逻辑运算符、条件运算符、位运算符、其他运算符、条件
19、运算符、位运算符、其他运算符。运算符。n运算符按运算符按连接数据个数分接数据个数分为3种:一元运算符(种:一元运算符(连接接1个个数据)、二元运算符(数据)、二元运算符(连接接2个数据)、三元运算符个数据)、三元运算符(连接接3个数据)。个数据)。312.3 运算符运算符32n赋值运算符是二元运算符,其运算符是二元运算符,其优先先级别为14级,结合方向合方向为右到左。它的左右到左。它的左边必必须是是变量,右量,右边是一个表达式。是一个表达式。n赋值运算符的作用是运算符的作用是给符号符号”=”的左的左边的的变量量赋值。例。例如:如:int y=1;/把把1赋给y float z=y*22+78;
20、/把把98赋给z332.3.1 赋值运算符赋值运算符2.3.1 赋值运算符赋值运算符1简单赋值运算符运算符简单赋值运算符以符号运算符以符号“=”表示,是一个二元运算表示,是一个二元运算符(符(对两个操作数作两个操作数作处理),其功能是将右方表达式理),其功能是将右方表达式的运算的运算结果果赋给左方操作数。左方操作数。例如:例如:inta=100;342复合复合赋值运算符运算符复合复合赋值运算符的两运算符的两边是一个整体。是一个整体。352.3.1 赋值运算符赋值运算符2.3.2 算术运算符算术运算符算算术运算符主要用于基本的算运算符主要用于基本的算术运算,例如加法、减法、运算,例如加法、减法、
21、乘法、除法等,操作数乘法、除法等,操作数类型是数型是数值。36371算算术一元运算符一元运算符(1)数据符号)数据符号(+,-)算算术一元运算符包括一元运算符包括“+”、“-”。例如。例如:-99/表示表示负数数+88/表示正数表示正数2.3.2 算术运算符算术运算符38(2)自增自减运算符)自增自减运算符自增运算符(自增运算符(+)使)使变量量值增增1;自减运算符(自减运算符(-)使)使变量量值减减1。例如:。例如:+x/先使先使x的的值加加1,再使用,再使用x-x/先使先使x的的值减减1,再使用,再使用xx+/先使用先使用x之后,再使之后,再使x的的值加加1x-/先使用先使用x之后,再使之
22、后,再使x的的值减减12.3.2 算术运算符算术运算符39+x和和x+的区的区别:+x是先是先执行行x=x+1再使用再使用x的的值;而;而x+是先使用是先使用x的的值再再执行行x=x+1。如果如果x的原的原值是是9,则有如下有如下计算。算。k=+x;/该语句句执行后,行后,k的的值是是10,x的的值是是10k=x+;/该语句句执行后,行后,k的的值为9,x的的值为10inta=3;a=a+2;a+=4;intb=+a+2;intc=a+3;2.3.2 算术运算符算术运算符402算算术二元运算符二元运算符(1)加减运算符)加减运算符从左到右依次运算。从左到右依次运算。例如:例如:7+8-5/先先
23、计算算7+8,然后将得到的,然后将得到的结果减果减52.3.2 算术运算符算术运算符41(2)乘除和求余运算符)乘除和求余运算符“*”(乘)、(乘)、“/”(除)和(除)和“%”(求余)运算符(求余)运算符的的优先先级是是3级,其,其结合方向是从左到右。乘除运算合方向是从左到右。乘除运算符的操作数据符的操作数据类型是整型或浮点型。型是整型或浮点型。例如:例如:5*3/5/先先计算算5*3,然后将得到的,然后将得到的结果除以果除以512%5/求余运算,求余运算,计算的算的结果是果是2。其。其计算算过程:程:12除以除以5,得,得到的余数是到的余数是22.3.2 算术运算符算术运算符2.3.3 关
24、系运算符关系运算符关系运算符用于比关系运算符用于比较两个数两个数值之之间大小关系的二元运算符,多用在条件表达式大小关系的二元运算符,多用在条件表达式中例如:大于、等于、不等于,返回布中例如:大于、等于、不等于,返回布尔值(true或或false)。假假设inta=3,b=5;4243关系运算符用来比关系运算符用来比较两个数据的大小关系,其两个数据的大小关系,其结合方合方向是从左到右,运算向是从左到右,运算结果是果是boolean型。关系运算符型。关系运算符的操作数据的操作数据类型可以是表达式、常量、型可以是表达式、常量、变量。关系运量。关系运算符如表所示。算符如表所示。运运 算算 符符 含含
25、义义 举举 例例 运算结果运算结果 优先级优先级 大于大于 53 53 true true 6 6 小于小于 63 6=大于等于大于等于 b b=a a true true 6 6=小于等于小于等于 5=5 5t/运算后的运算后的结果果为true(x+y)80/假假设x=30,y=20,运算后的,运算后的结果是果是false2.3.3 关系运算符关系运算符2.3.4 逻辑运算符逻辑运算符逻辑运算符主要用于运算符主要用于对布布尔型数据型数据进行行逻辑运算,返回运算,返回值是布是布尔类型。型。逻辑运算符有:运算符有:!(非)、(非)、&(与)、(与)、&(与)(与)、|(或)、(或)、|(或)、(
26、或)、(异或)。(异或)。45462 2逻辑运算规则逻辑运算规则 假设假设X X、Y Y是是booleanboolean型数据,则对型数据,则对X X,Y Y进行与、或、非运算的规则进行与、或、非运算的规则如表所示。如表所示。(1 1)“逻辑与逻辑与”运算符运算符“&”&”(2 2)“逻辑或逻辑或”运算符运算符“|”|”(3 3)“逻辑非逻辑非”运算符运算符“!”!”逻辑非、逻辑与、逻辑或的优先级依次降低逻辑非、逻辑与、逻辑或的优先级依次降低X X Y Y X&Y X&Y X|Y X|Y!X!X truetruetruetruetruetruetruetruefalsefalsetruetru
27、efalsefalsefalsefalsetrue true falsefalsefalsefalsetruetruefalsefalsetruetruetruetruefalsefalsefalsefalsefalsefalsefalsefalsetruetrue473逻辑表达式表达式逻辑表达式的运算表达式的运算结果是果是boolean型。型。例如:例如:!(35)|(10a);结果:果:truebooleana=!(200100);/a=falsebooleanx=false;booleanb=(2325)&(x=2523);/b=false,x=true&是短路与是短路与booleanb
28、=(2325)&(x=2523);/b=false,x=falseinta=100,b=200;booleanm=(+a5)&(+b5);/a=101,b=200,m=falseinta=100,b=200;booleanm=(+a5)|(+b5);/a=101,b=201,m=false|是短路或,即如果前面已是短路或,即如果前面已经有了有了结果,后面不再果,后面不再执行行booleanm=(+a5)|(+b5)|(+b23)|(x=2325);/y=true,x=true2.3.5 条件运算符条件运算符条件运算符是三元运算符,格式如下:条件运算符是三元运算符,格式如下:布布尔表达式表达式?
29、表达式表达式1:表达式:表达式2运算运算过程:程:如果布如果布尔表达式的表达式的值为true,则返回表达式返回表达式1的的值,否,否则返回表达式返回表达式2的的值。49例如:例如:int a=5,b=2,result;if(ab)result=a-b;else result=b-a;以上的以上的if语句等价于下面的句等价于下面的语句:句:result=ab?a-b:b-a;502.4.5 条件运算符条件运算符2.3.6 位运算符位运算符Java定定义位运算符用来位运算符用来对所有的二所有的二进制位做位运算。位运算符制位做位运算。位运算符应用于整数用于整数类型型(int),长整型整型(long)
30、,短整型,短整型(short),字符型,字符型(char),和字,和字节型型(byte)等等类型。型。5152按位运算是指把要操作的数据转换为二进制后,对二按位运算是指把要操作的数据转换为二进制后,对二进制的每个比特位(进制的每个比特位(bitbit)进行运算。)进行运算。JavaJava的按位操的按位操作数据只能是整型、作数据只能是整型、charchar型、型、booleanboolean型数据。型数据。1 1整型数据的二进制表示整型数据的二进制表示整型数据在内存中以二进制的形式表示,例如一个整型数据在内存中以二进制的形式表示,例如一个intint型的变量在内存中占型的变量在内存中占4 4个
31、字节,共个字节,共3232位。位。2.3.6 位运算符位运算符53(1 1)正整数的二进制表示)正整数的二进制表示例如(例如(intint型数据)型数据)+6+6的二进制表示如下:的二进制表示如下:00000000000000000000000000000000000000000000000000000110 00000110 2.3.6 位运算符位运算符54(2)负整数的二整数的二进制表示制表示负数在内存中以数在内存中以补码的形式表示。的形式表示。假假设x是正整数。是正整数。则求求负数数(-x)的的补码步步骤是:首先,是:首先,求求负数的数的绝对值,并用二,并用二进制数表示;其次,制数表示;
32、其次,对绝对值对应的二的二进制数按位取反;第三,制数按位取反;第三,对取反后的取反后的二二进制数加制数加1。2.3.6 位运算符位运算符例如,求例如,求-5(假(假设是是int型数据)的型数据)的补码过程如下:程如下:第一步,求第一步,求负数的数的绝对值,并用二,并用二进制数表示(制数表示(int型整数占型整数占4个字个字节)。)。-5的的绝对值是是5,因是,因是int型数据,占型数据,占4个字个字节,其二,其二进制表示如下:制表示如下:00000000000000000000000000000101第二步,第二步,对二二进制数按位取反。制数按位取反。对上面数据按位取反后的上面数据按位取反后的
33、结果如下:果如下:11111111 11111111 11111111 11111010第三步,第三步,对取反后的二取反后的二进制数加制数加1。11111111 11111111 11111111 11111011552.3.6 位运算符位运算符562按位运算符按位运算符位运算符有:非位运算符有:非()、与、与(&)、或、或(|)、异或、异或()、右移、右移()、左移、左移()等等。下表是位运算符等等。下表是位运算符规则。位(a)位(b)按位与(a&b)按位与(a|b)按位异或(ab)按位非(b)0 00 00 00 00 01 11 10 00 01 11 11 10 01 10 01 11
34、 10 01 11 11 11 10 00 02.3.6 位运算符位运算符57假设假设a,ba,b都是都是bytebyte型数据型数据(占一个字节占一个字节),a=3,b=5a=3,b=5,下面是几种按位运算的例子。下面是几种按位运算的例子。(1)(1)按位与(按位与(&)假设假设x,yx,y分别是二进制数中的一位数。则分别是二进制数中的一位数。则x,yx,y进行按进行按位与运算时,只有当位与运算时,只有当x,yx,y都是都是1 1时,其计算结果才是时,其计算结果才是1 1,否则是,否则是0 0。2.3.6 位运算符位运算符a:00000011b:00000101&_00000001a=5:0
35、0000101b=-5:11111011 补码&_0000000158(2)按按位或(位或(|)假假设x,y分分别是二是二进制数中的一位数。制数中的一位数。则,x,y进行按行按位或运算位或运算时,只有当,只有当x,y都是都是0时,其,其计算算结果才是果才是0,否,否则是是1。a:00000011 b:00000101|_000001112.3.6 位运算符位运算符(3)按按位异或(位异或()假假设x,y分分别是二是二进制数中的一位数。制数中的一位数。则,x,y进行行按位异或运算按位异或运算时,当,当x,y不同不同时,其,其计算算结果是果是1,相同是,相同是0。a:00000011b:00000
36、101 _00000110592.3.6 位运算符位运算符(4)按按位非(位非()假假设x是二是二进制数中的一位数。当制数中的一位数。当x是是0时,则按位按位非运算的非运算的结果是果是1,当,当x是是1时,则按位非运算的按位非运算的结果是果是0。b:00000101_11111010 602.3.6 位运算符位运算符61 运算符的优先级决定了表达式中数据计算的先运算符的优先级决定了表达式中数据计算的先后顺序。在编写程序时,应尽量使用后顺序。在编写程序时,应尽量使用“()()”运算符运算符来实现所需运算次序。来实现所需运算次序。例如把例如把xy&!zxy&!z写成写成 (xy)&(!z)(xy)
37、&(!z),这样,这样的程序更易于阅读。的程序更易于阅读。2.3.7 运算符的优先级运算符的优先级62 在表达式中数据计算的先后顺序决定于两个方在表达式中数据计算的先后顺序决定于两个方面:面:(1 1)对优先级不同的运算符来说,系统首先选择优先级最)对优先级不同的运算符来说,系统首先选择优先级最高的运算符,对它连接的数据进行计算,然后选择次优先高的运算符,对它连接的数据进行计算,然后选择次优先级的运算符,对它连接的数据进行计算,以此类推;级的运算符,对它连接的数据进行计算,以此类推;(2 2)对于级别相同的运算符,按运算符的结合性(结合方)对于级别相同的运算符,按运算符的结合性(结合方向),对
38、它连接的数据进行计算。向),对它连接的数据进行计算。2.3.7 运算符的优先级运算符的优先级2.3.7 运算符的优先级运算符的优先级63高高低低642.4.1顺序控制序控制语句句顺序控制程序从上到下、从左到右依次序控制程序从上到下、从左到右依次执行。行。2.4Java的流程控制结构的流程控制结构例如:下面的代码按照编写的顺序执行例如:下面的代码按照编写的顺序执行。public class OrderDemo public static void main(String args)int x=125,y=5,z=0;z=x/y;System.out.println(整除的结果为整除的结果为+z)
39、;2.4.2条件条件控制控制语句句依据条件表达式的依据条件表达式的值,可以改,可以改变程序程序执行的行的顺序。序。选择语句分句分为两大两大类,即,即if语句和句和switch语句句。651条件条件语句句条件条件语句可分句可分为3种。种。(1)if语句句if语句的格式:句的格式:662.4 Java的流程控制结构的流程控制结构if (boolean 布布尔表达式表达式)/语句序列或句序列或语句句块 67【例例2.1】用用if语句句实现检测分数是否及格。分数是否及格。public class ScoreOrder public static void main(String args)int sc
40、ore=59,pass=60;if(score=pass)System.out.print(及格);System.out.print(你学习还不错啊);2.4 Java的流程控制结构的流程控制结构68(2)ifelse语句句ifelse语句的格式如下:句的格式如下:if(boolean布布尔表达式表达式)/语句序列或句序列或语句句块else/语句序列或句序列或语句句块2.4 Java的流程控制结构的流程控制结构69【例例2.2】判断分数是否及格。判断分数是否及格。public class ScoreLevel public static void main(String args)int st
41、u1score=48,stu2score=97;if(stu1score=60)System.out.println(学生1的成绩及格);else System.out.println(学生1的成绩不及格);if(stu2score=60)System.out.println(学生2的成绩及格);else System.out.println(学生2的成绩不及格);2.4 Java的流程控制结构的流程控制结构70(3)ifelseif嵌套嵌套语句句ifelseif嵌套嵌套语句的格式如下:句的格式如下:if(boolean布布尔表达式表达式1)/语句序列或句序列或语句句块1elseif(bool
42、ean布布尔表达式表达式2)/语句序列或句序列或语句句块2else/语句序列或句序列或语句句块32.4 Java的流程控制结构的流程控制结构【例例2.3】判断分数是否及格判断分数是否及格publicclassScoreDegreepublicclassScoreDegreepublicstaticvoidmain(Stringargs)publicstaticvoidmain(Stringargs)Scannersc=newScanner(System.in);Scannersc=newScanner(System.in);System.out.println(System.out.print
43、ln(请输入成入成绩:););intscore=sc.nextInt();intscore=sc.nextInt();if(score60)if(score60)System.out.println(System.out.println(该生成生成绩为不及格不及格););elseif(score70)elseif(score70)System.out.println(System.out.println(该生成生成绩为及格及格););elseif(score80)elseif(score80)System.out.println(System.out.println(该生成生成绩为中等中等);
44、);elseif(score90)elseif(score90)System.out.println(System.out.println(该生成生成绩为良好良好););elseelseSystem.out.println(System.out.println(该生成生成绩为优秀秀););722.switch语句句switch语句是多句是多选一的一的结构,可以代替多个构,可以代替多个ifelse语句句组成的分支成的分支结构构。格式如下:格式如下:2.4 Java的流程控制结构的流程控制结构switch(表达式表达式)case常量常量1:语句句1;break;case常量常量2:语句句2;bre
45、ak;case常量常量值n:语句句块n;break;default:语句;句;break;732.5 Java的流程控制结构的流程控制结构注意:注意:(1)switch后面括号中表达式的后面括号中表达式的值只能判断字符只能判断字符类型型(char)和整型()和整型(int)表达式,而不能用浮点)表达式,而不能用浮点类型或型或long类型,型,jdk1.7以后可以以后可以是字符串。是字符串。(2)同一个)同一个switch语句,句,case的常量的常量值1-n必必须是整型是整型或字符型,必或字符型,必须互不相同。互不相同。(3)通常在每一种)通常在每一种case情况后都情况后都应使用使用brea
46、k语句,否句,否则遇到第一个相等的遇到第一个相等的case常量后,常量后,该语句之后句之后break之前之前的所有的所有语句都会被句都会被执行(包括行(包括default后面的后面的语句)。句)。742.4 Java的流程控制结构的流程控制结构注意:注意:(4)每个)每个case分支里可以是一条或多条分支里可以是一条或多条语句,不必使用句,不必使用复合复合语句句,即用不用,即用不用 都可以都可以。(5)不同)不同case后的后的语句相同句相同时,可以合并多个,可以合并多个case子句。子句。即在前面的即在前面的case语句中不写具体代句中不写具体代码,也不写,也不写break,只,只在最后一个
47、在最后一个case语句写代句写代码和和break。(6)switch语句在用表达式的句在用表达式的值比比较每一个每一个case后的常后的常量量值时,是从前往后,是从前往后顺序序进行的。若各个常量行的。若各个常量值互不相同,互不相同,则case子句的子句的顺序可任意。序可任意。752.5 Java的流程控制结构的流程控制结构76【例例2.4】根据成根据成绩输出相出相应的分数等的分数等级。public class ScoreTest public static void main(String args)Scanner sc=new Scanner(System.in);Scanner sc=ne
48、w Scanner(System.in);System.out.println(System.out.println(请输入成绩:请输入成绩:););int score=sc.nextInt();int score=sc.nextInt();switch(int)(scorescore/10)case 10:System.out.println(成绩为优成绩为优);break;case 9:System.out.println(成绩为优成绩为优);break;case 8:System.out.println(成绩为良成绩为良);break;case 7:System.out.println(
49、成绩为中成绩为中);break;case 6:System.out.println(成绩为及格成绩为及格);break;default:System.out.println(成绩为差!成绩为差!);/swith结束结束 /方法语句结束方法语句结束2.4 Java的流程控制结构的流程控制结构772.4.3循循环控制控制语句句循循环控制控制语句是指根据循句是指根据循环初始条件和初始条件和终结要要求重复求重复执行循行循环体内的操作,即使用条件表达式体内的操作,即使用条件表达式来控制一段程序的重复来控制一段程序的重复执行,被反复行,被反复执行的行的这段段程序成程序成为“循循环体体”。2.4 Java的
50、流程控制结构的流程控制结构78一个循一个循环一般包括一般包括4个模个模块:(1)初始化模)初始化模块(2)循)循环体模体模块(3)循)循环条件条件变更模更模块(4)终止模止模块2.4 Java的流程控制结构的流程控制结构Java有三种循有三种循环控制控制结构:构:while循循环,do-while循循环和和for循循环。792.4 Java的流程控制结构的流程控制结构801.while1.while循环循环while循循环语句是通句是通过循循环条件来控制是否要条件来控制是否要继续反复反复执行循行循环体。体。格式如下:格式如下:2.4 Java的流程控制结构的流程控制结构while(while(