上节内容回顾Java的基本语法单位语句、空白、注释Java的数据类型基本数据类型、复合数据类型类和对象的初步介绍类的定义、对象的创建及使用。第3讲表达式和流程控制语句本章主要内容:表达式——重点操作数、运算符、常用数学函数流程控制语句——重点①分支语句②循环控制语句3.1表达式定义:由操作数和运算符组成,对操作数进行运算符指定的操作,并得出一个结果的式子。操作数:包括常量和变量。运算符包括:算术运算符、关系运算符、逻辑运算符、位运算符等。3.1.1操作数常量只有简单数据类型和String类型才有相应的常量形式常量含义23.59double型常量-1247.1ffloat型常量trueboolean型常量ThisisaStringString型常量变量说明的基本格式为:类型变量名1[=初值1][,变量名2[=初值2]]…;如:intx=1,y=2;其中:①类型可为简单类型,也可以是类类型(对象)。②简单类型的变量在说明之后,系统自动在内存分配相应的存储空间。对象说明后,要调用new来创建对象实例,才分配相应的存储空间。变量变量初始化Java不允许将未经初始化的变量用做操作数。①简单变量:使用前必须进行初始化。②成员变量:系统自动初始化。(使用new运算符分配存储空间后)类型初始值byte(byte)0short(short)0int0long0Lfloat0.0fdouble0char'\u0000'(NULL)booleanFALSE所有引用类型null例intx=(int)(Math.random()*100);inty;intz;if(x50){y=9;}z=y+x;//可能在初始化之前使用,导致编译错误变量作用域变量的作用域:是指可访问该变量的代码范围。成员变量的作用域:整个类局部变量的作用域:是从说明处开始,到包含该说明的语句块结束处。注意:①同一块内不允许定义相同的变量。②局部变量再作用域内将屏蔽同名成员变量。操作数程序3-1同一块内说明两个相同的局部变量操作数程序3-2修改程序3-1,把第二个局部变量说明改为赋值语句操作数程序3-3main()方法中两次说明了同名局部变量name,但第6行说明的变量只在第6至第9行的块内有效,在块外该变量消失,第11行不在其作用域内。3.1.2运算符算术运算符①包括:+、-、*、/、%②算术运算符还有“++”、“--”两种,分别表示加1和减1操作。3/2//结果是115.2%5//结果是0.2关系运算符包括:大于()、大于等于(=)、小于()、小于等于(=)、等于(==)、不等于(!=)6种。关系运算符都是二元运算符,运算的结果是一个逻辑值。Java允许“==”和“!=”两种运算用于任何数据类型。例如:可以判定两个对象(实例)是否相等逻辑运算符包括:逻辑与(&&)、逻辑或(||)和逻辑非(!)。Java对逻辑与和逻辑或提供短路操作功能。例如:(31)&&(62)位运算符位运算符用来对二进制位进行操作。包括:按位取反(~)、按位与(&)、按位或(|)、异或(^)、右移()、左移()及无符号右移()。位运算符只能对整型和字符型数据进行操作。右移运算符“”右移:使用最高位填充移位后左侧的空位。右移的结果为:每移一位,第一个操作数被2除一次,移动的次数由第二个操作数确定。例:1281得到64补码0…010000000-〉0…001000000无符号右移运算符无符号右移:它用0填充左侧的空位。只对位进行操作,而没有算术含义,例:0xa22得到40补码0…010100010-0…000101000其他运算符扩展赋值运算符+=、-=、*=、/=、%=、&=、|=、^=、=、=、=条件运算符?:点运算符.实例运算符instanceofnew运算符数组下标运算符[]等条件运算符条件运算符(?:)是三元运算符,它的一般形式为:表达式?语句1:语句2;如:intx;32?x=1:x=2;注意:语句1和语句2需要返回相同的类型,且不能是void。运算符的优先次序在对一个表达式进行计算时,如果表达式中含有多种运算符,则要按运算符的优先顺序依次从高向低进行,同级运算符则从左向右进行。括号可以改变运算次序运算符的优先次序数学函数数学函数类Math,几个常用的函数调用:Math.sin(0)//返回0.0,这是double类型的值Math.cos(0)//返回1.0Math.tan(0.5)//返回0.5463024898437905Math.round(6.6)//返回7Math.round(6.3)//返回6Math.ceil(9.2)//返回10.0Math.ceil(-9.8)//返回-9.0Math.floor(9.2)//返回9.0Math.floor(-9.8)//返回-10.0Math.sqrt(144)//返回12.0Math.pow(5,2)//返回25.0Math.exp(2)//返回7.38905609893065Math.log(7.38905609893065)//返回2.0Math.max(560,289)//返回560Math.min(560,289)//返回289Math.random()//返回0.0到1.0之间双精度的一个随机数值3.2流程控制语句表达式语句分支语句循环语句3.2.1表达式语句表达式可当作一个值,有的表达式也可当作语句.方法调用通常返回一个值,一般用在表达式中。有的方法调用可直接当作语句System.out.println(HelloWorld!);customer1=newCustomer();point2=newPoint();x=12;x++;3.2.3分支语句if-else语句;switch-case语句。1if语句形式一:形式二:if(逻辑表达式){语句;}if(逻辑表达式){语句;}else{语句;}形式三(if语句的嵌套):if(逻辑表达式1){语句;}elseif(逻辑表达式2){语句;}…else{语句;}注意:条件表达式必须是布尔类型,例如:下面的写法在C/C++中是合法的,但在Java中却是非法的:inti=10;if(i)...if语句的嵌套else子句属于逻辑上离它最近的if语句if(firstVal==0)if(secondVal==1)firstVal++;elsefirstVal--;这两个匹配if语句例3-101if(firstVal==0){2if(secondVal==1)3firstVal++;4}5else6firstVal--;这两个匹配2switch语句语法格式Switch(表达式){case表达式取值1:执行语句1;break;case表达式取值2:执行语句2;break;……[default:执行语句n;break;]}switch后面的表达式类型必须是字符型或整型;case后面的常量不能重复;switch语句例1//colorNum是整型变量2switch(colorNum){3case0:4setBackground(Color.red);5break;6case1:7setBackground(Color.green);8break;9default:10setBackground(Color.black);11break;12}switch语句switch语句和if语句可以互相代替上例用if语句实现:if(colorNum==0)setBackground(Color.red);elseif(colorNum==1)setBackground(Color.green);elsesetBackground(Color.black);3.2.4循环控制语句for语句;While语句;do-while语句;1for语句语法格式如下:for(循环变量初始化;逻辑表达式;迭代语句){循环体语句;}例:inti,sum=0;for(i=0;i3;i++){sum+=i;}System.out.println(“i=“+i+”sum=”+i);例for(;;)System.out.println(Alwaysprint!);该语句等价于:for(;true;)System.out.println(Alwaysprint!);注意:这段循环的条件是永真式,循环将不会停止,是死循环,编程中一般应该避免。2while语句while语句格式:while(逻辑判断条件){循环体;[迭代代码;]}用于设置循环条件变量值例:inti=0,sum=0;while(i3){sum+=i;i++;}System.out.println(“i=“+i+”sum=”+i);3do-while语句do-while语句的语法格式如下:do{循环体;[迭代代码;]}while(循环逻辑判断条件);设置用于逻辑判断的变量值3.2.5break与continue语句Java语言抛弃了goto语句,代之以两条特殊的break和continue语句以及标号。标号标号可以放在for、while或do语句之前,其语法格式为:标号:语句;break语句break语句可用于三类语句中:跳出switch语句跳出for、while及do等循环语句跳出标号所在的语句块中for(inti=0;i100;i++){if(i==5)break;System.out.println(i=+i);}break语句和标号其语法格式为:功能:是跳出标号所标记的语句块,继续执行其后的语句。多用于嵌套中,控制从内层块跳到外层块之后。break标号;程序3-5continue语句在循环语句中,continue可以立即结束当次循环而执行下一次循环,当然执行前先判断循环条件是否满足。continue语句也可以和标号一起使用,立即结束标号标记的那重循环的当次执行,开始下一次循环。多用于多重循环中。其语法格式为:continue标号;例运行结果:*******************************************************本节小结表达式操作数、运算符、常用数学函数流程控制语句——重点①分支语句②循环控制语句③带标号的Break和Continue语句第三讲结束谢谢大家!