1、运算符、表达式、流程控制(上),主要内容,变量Java运算符表达式,运算符(示例4-1/4-2),分割符:,,;,( ) 算术运算符:+,*,/,%,+, 关系运算符:,=, 赋值运算符:= 扩展赋值运算符:+=,=,*=,/= 字符串连接运算符:+ 造型操作符:(),递增/递减运算符,对于需要对操作数进行加1或减1操作时,可以使用递增或递减运算符。 递增:+ 递减:- 注:+和- 操作符只对变量操作,不能对数字操作 。,关系和布尔运算符(示例4-3),Java使用=号来判断两个值是否相等,而用!=来判断是否不等,用、=、=来判断大于等于、小于等于 逻辑运算符功能!- 逻辑非 & - 逻辑与
2、| - 逻辑或 - 逻辑异或 &- 短路与 | - 短路或 注:关系表达式和布尔表达式运算后的结果为:true或flase 练习:用”&”校验用户名密码不为空并且长度大于6位。,关系和布尔运算符(con.),位运算符,位运算符功能 - 取反(一元运算符) & - 按位与 | - 按位或 - 按位异或 位运算符功能说明:,&,|,移位运算符,:右移运算符,将左操作数向右移动,移位个数由右操作数决定 :无符号右移位运算符,移位运算符(con.),移位运算符性质 适用数据类型:byte、short、char、int、long,对低于int型的操作数将先自动转换为int型再移位 对于int型整数移位a
3、b,系统先将b对32取模(也就是移位33次和移位1次得到的结果相同 ),得到的结果才是真正移位的位数 对于long型整数移位时ab ,则是先将移位位数b对64取模,移位运算符,赋值运算符(示例4-4),赋值运算符“=”是最常用的一种运算符。它将等于号右边的表达式的值赋给左边的变量。可以将其它的运算符和赋值运算符结合起来,作为“扩展”的赋值运算符:+=,-=,*=,/=,%=,=,&=,|=,=,=,赋值运算符(con.),当一个表达式中含有不同类型的数据时,需要用到类型转换。 类型转换存在两种不同的方式: 隐式转换(系统自动完成)系统自动把数据由低级类型向高级类型转换 强制转换(由开发人员自己
4、完成)将表达式的结果强制转换成指定的数据类型,类型转换(con.) (示例4-5),隐式类型转换:见下图。在这个图中,蓝色的箭头实线表示在进行转换的时候,不会损失信息,而红色的箭头虚线表示在转换时可能会引起信息的损失。 如果变量的长度不小于表达式的长度,则可进行赋值,称表达式是赋值兼容的。 在发生隐式类型转换时,表达式的结果类型以整个表达式中最高的数据类型为准!,强制类型转换(Cast,造型):强制类型转换,或者称为造型,用于显式的转换一个表达式的类型。简单数据类型可以被进行强制类型转换。例如:将一个double类型的数据强制转换成int类型示例: double d = 3.14;int a
5、= (int) d;利用运算符“(type)变量”进行强制类型转换,运算符“()”中的type表示将变量的值转换成的数据类型。除了简单类型外,引用类型也可以进行强制类型转换。(后面会详细讲解),类型转换(con.),作为字符串连接符的“+” (示例4-6),运算符“+”除了用于数值类型的加法运算法,在字符串类型(String)数据中,它还是一个用于连接字符串的特殊的运算符。 当“+”用在表达式中的时候,如果其中有一个操作数是字符串类型(String),则Java会自动将另一个操作数也转换成字符串,然后将这两个字符串相连起来生成一个新的字符串。,表达式,表达式是运算符和操作数的结合,它是任何一门
6、编程语言的关键组成部分。 表达式允许程序员进行数学计算、值的比较、逻辑操作以及在Java中进行对象的操作。 一些表达式的例子: x x + 10 y = x + 10 arr10 student.getName(),表达式中运算符的结合性,所有的数学运算都认为是从左到右结合的,在Java中,大部分运算也是从左到右结合的,只有单目运算符、赋值运算符、条件运算符(逻辑运算符)例外 乘法和加法是两个可结合的运算,也就是说,这两个运算符左右两边的操作符可以互换位置而不会影响到结果。例如:a+b与b+a的结果一样a*b与b*a的结果一样,表达式练习1,使用Java书写如下表达式:,表达式练习2,请根据如
7、下公式,计算月贷款支付金额,其中贷款总额、月利率、年数可自定义。公式如下:,要求:采用方法计算月贷款支付金额。其中贷款总额、月利率、年数作为参数传递给方法后,方法完成月贷款金额的计算。(注:不用考虑计算结果),注意:请思考以下表达式是否正确?byte by1=10;byte by2=20;byte by3=by1+by2; 或short s1 = 1;short s2 = 2;short s3 = s1 + s2; 或char c1 = 1;char c2 = 2;char c3 = c1 + c2;,表达式中运算符的优先顺序,下面的表格说明了各个运算符的优先顺序,优先级高的运算符放置在表的上部,而在同一行的运算符拥有同样的优先顺序。 除了单目运算符、赋值运算符,其它的运算符都是从左到右结合的。,运算符优先级,运算符优先级(con.),运算符优先级图示,三目运算符?:,语法:booleanExpression ? Exp1 : Exp2 说明:如果booleanExpression的值为true,是返回Exp1表达式的值,否则返回Exp2表达式的值。 例: String str = ab ? “a“ : “b“ int r = ab ? 1 : 2,