资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,第三章,Java,语言基础,本章主要内容,3.1,数据类型,3.2,运算符和表达式,3.3,条件结构和循环结构,3.4,字符串,3.5,数组,3.3.2,循环结构,3.3.1,条件结构,3.2.2,表达式,3.2.1,运算符,3.2,运算符和表达式,3.2.1,运算符,对各种类型的数据进行加工的过程称为运算,表示各种不同运算的符号称为运算符,参与运算的数据称为操作数,运算符的优先级与结合性如表所示。,3.2.2,表达式:,由操作数和运算符按一定的语法规则组成的符号序列。,图,3.2,3.2,运算符和表达式,1.,赋值运算符和赋值表达式,“,=”,:,赋值运算符,它的作用是设置变量的值,。,赋值运算符是双目运算符,因为“,=”,两边都要有操作数。“,=”,左边是待赋值的变量,右边是要赋的值。,注意:,除了“,=”,基本赋值运算符外,另外还有几个复合赋值运算符:,+=,、,-=,、*,=,、,/=,和,%=,;五个由位运算符和赋值运算符组成的复合赋值运算符:,=,、,&=,、,|=,、和,=,。,用赋值运算符连接起来的式子称为赋值表达式。赋值表达式的值就是被赋值的变量的值。赋值表达式加上分号就构成了赋值语句,是极为常用的,Java,语句,3.2,运算符和表达式,1.,赋值运算符和赋值表达式,在使用符合运算符时,,=,右边的表达式总是先求值,如:,x*=2+5,等价于,x=x*,(,2+5,),而不是等价于,x=x*2+5,;,3.2,运算符和表达式,2.,算术运算符和算术表达式,加(,+,)、减(,-,)、乘(*)、除(,/,)和取余(,%,)。算术运算符是双目运算符。利用算术运算符连接起来的式子称为算术表达式。,单目运算符:自增运算符,(,+,),和自减运算符,(,-,),。其功能是使变量的值增,1,或减,1,。,+,和,-,运算有以下四种情况:,i+,:使用,i,之后,,i,的值加,1,,即先取值,后自加。等价于,i=i+1,。,+i,:先使,i,加,1,,然后再使用,i,,即先自加,后取值。等价于,i=i+1,。,i-,:使用,i,之后,,i,的值减,1,,即先取值,后自减。等价于,i=i-1,。,-i,:先使,i,减,1,,然后再使用,i,,即先自减,后取值。等价于,i=i-1,。,注意:,我们建议,为了程序的易读性,在程序中尽量不要使用这种自增自减运算符。,+,也可以用于将两个字符串连接到一块,如果任何一个操作数是,String,时,则,+,运算符变成,String,的连接运算符;如果两个操作数为数字,则,+,运算符是加法运算符,3.2,运算符和表达式,3.,关系运算符和关系表达式,关系运算符又称比较运算符,因为关系运算实际上是比较大小的运算。,Java,提供了,6,种关系运算符:,、,=,、,、,5,的值是“真”,而,x,=,6?3:9 /,整个表达式的值为,9,3.2,运算符和表达式,6.instanceof,比较,instanceof,运算符只能用于对象引用变量,可以用来检查是否是某种类型,运算符左边的变量所引用的对象是否能通过右边的类或接口类型的,IS-A,测试,public class TestInstanceof,public static void main(String args),String s=new String(aaa);,if(s instanceof String),System.out.println(s is a String);,运行结果:,s is a String,3.2,运算符和表达式,7,.,位运算符和位表达式,位运算符的作用在于对整数数值的二进制表示进行运算,像二进制的,AND,与,OR,等运算。,(1),位求反运算符,:,对操作数的二进制数据的每一个二进制位都取反,即,1,变成,0,,而,0,变成,1,。如,8,的结果为,-9,。,(2),位与运算符,&,:,参与运算的两个操作数,相应的二进制数位进行位与运算。如,5&11,结果为,1,。,(3),位或运算符,|,:,参与运算的两个操作数,相应的二进制数位进行位或运算。如,5|11,结果为,15,。,3.2,运算符和表达式,7,.,位运算符和位表达式,(4),位异或运算符,:,参与运算的两个操作数,相应的二进制数位进行位异或运算。如,511,结果为,14,。,(5),保留符号位的右移运算符,:,将一个操作数的各个二进制位全部向右移若干位,这个位数由右操作数来决定,移到右端的低位被舍弃,左边空出的位全部用最高位的符号位来填充。如,51,结果为,2,。,91,,结果为,5,。,(6),不保留符号位的右移运算符,:,与,不同的是,,右移后左边空出的位用,0,填充。如,51,结果为,2,。,91,,结果为,2147483643,。,(7),左移运算符,:将一个操作数的所有二进制位向左移若干位,右边空出的位填,0,。若高位左移后溢出,则舍弃溢出的数。如,51,结果为,10,。,3.3,条件结构和循环结构,3.3.1,条件结构,条件语句使部分程序可根据某些表达式的值被有选择地执行。,Java,编程语言支持双路,if,和多路,switch,分支语句。,1 if,else,语句,:,基本句法是,注意,:,在,Java,编程语言中,,if(),用的是一个布尔表达式,而不是数字值,这一点与,C/C+,不同。前面已经讲过,布尔类型和数字类型不能相互转换。因而,如果出现下列情况:,if (x),/x =1,你应该使用下列语句替代:,if (x!=0),if(booleanExpression),/code block;,else if(boolean Expression),/code block;,else,/code block;,3.3,条件结构和循环结构,2 switch,语句,switch,语句的句法是:,当变量或表达式的值不能与任何,case,值相匹配时,可选缺省符(,default,)指出了应该执行的程序代码。,如果没有,break,语句作为某一个,case,代码段的结束句,则程序的执行将继续到下一个,case,,而不检查,case,表达式的值。,switch(expression),case constant1:code block;break;,case constant2:code block;break;,default:code block;break,3.3,条件结构和循环结构,3.3.2,循环结构,循环语句使语句或块的执行得以重复进行。,Java,编程语言支持三种循环构造类型:,for,whil,e,和,do while,。,for,和,while,循环是在执行循环体之前测试循环条件,,而,do,是在执行完循环体之后测试循环条件。这就意味着,for,和,while,循环可能连一次循环体都未执行,而,do loops,将至少执行一次循环体。,3.3,条件结构和循环结构,1 for,循环,for,循环的句法是,:,例:,for(,初始化循环变量,;,变量判断式,;,变量计算式,),statement or block,for(int i=0;i 10;i+),System.,out,.println(Are you finished yet?);,System.,out,.println(Finally!);,3.3,条件结构和循环结构,2 while,循环,while,循环的句法是:,例,:,请确认循环控制变量在循环体被开始执行之前已被正确初始化,并确认循环控制变量是真时,循环体才开始执行。控制变量必须被正确更新以防止死循环。,while (,布尔表达式,),语句或块,int i=0;,while(i 10),System.,out,.println(Are you finished yet?);,i+;,System.,out,.println(Finally!);,3.3,条件结构和循环结构,3 do,循环,do,循环的句法是:,例:,注意:,作为一种编程惯例,,for,循环一般用在那种循环次数事先可确定的情况,而,while,和,do,用在那种循环次数事先不可确定的情况。,do,语句或块;,while(,布尔测试,),int i=0;,do,System.,out,.println(Are you finished yet?);,i+;,while(i 10);,System.,out,.println(Finally!);,3.3,条件结构和循环结构,4,循环流程控制,下列语句可被用在更深层次的控制循环语句中:,break,标注,:,break,语句被用来从,switch,语句中退出。,continue,标注,:,continue,语句被用来略过并跳到循环体的结尾。,例:,for(int i=0;i 3;i+),if(i=1),/,跳过下面代码,进入下次循环,continue;,for(int i=0;i 3;i+),if(i=1),/,结束所有循环,退出,break;,
展开阅读全文