1、本课内容,Java运算符 表达式,运算符,算术运算符: +,*,/,%,+, 关系运算符: ,=, 赋值运算符: = 扩展赋值运算符:+=,=,*=,/= 字符串连接运算符: +,算术运算符,注意事项:一个数除以零,若这个数是整型,则会产生一个异常(程序运行时中途退出,编译不会产生错误),若这个数是浮点型,则产生一个无穷大的值。 对于取模操作与别的程序语言有所区别,其操作数可以是浮点型。,算术运算符案例1,public class Test4_1public static void main(String args)System.out.println(“17.3mod0=“+17.3%0);
2、System.out.println(“17mod4=“+17%4);System.out.println(“17.3mod0=“+17.3%0);System.out.println(“17/0=“+17/0); ,算术运算符案例2,案例2:求一个四位整型数,计算其个、十、百、位上的数之和。如1789 个、十、百、位上的数之和=1+7+8+9=25.,算术运算符案例2,public class Test4_2public static void main(String args)int i,a,b,c,d;i=1789;a=i/1000;b=i%1000/100;c=i%100/10;d=i
3、%10;System.out.println(“你输入的整数是“+i+“其千百十个位上的数之和为“+(a+b+c+d); ,自增、自减运算符+、- 案例3 public class Test4_3 public static void main(String args) int i=9,a,b; b=i+;/先赋值再自加 a=+i;/先自加再赋值 System.out.println(“b=“+b); System.out.println(“i=“+i); System.out.println(“a=“+a); ,逻辑运算符(1),逻辑运算符功能!- 逻辑非 & - 逻辑与 | - 逻辑或 -
4、 逻辑异或 &- 短路与 | - 短路或 逻辑运算符功能说明:,逻辑运算符(1),逻辑运算符功能!- 逻辑非 & - 逻辑与 | - 逻辑或 - 逻辑异或 &- 短路与 | - 短路或 逻辑运算符功能说明:,逻辑运算符案例4,public class Test4_4public static void main(String args)boolean a,b,c;a = true;b = false;c = a ,逻辑运算符(2),短路逻辑运算符应用,位运算符,位运算符功能 - 取反 & - 按位与 | - 按位或 - 按位异或 位运算符功能说明:,&,|,位运算符案例5,分析下面程序的输出结
5、果并验证:public class Test4_5public static void main(String args)int a = 10;int i = a;System.out.println(“i=“ + i );System.out.println(128 | 3);System.out.println(67 3);System.out.println(67 ,移位运算符(1),左移 “ab; “将二进制形式的a逐位右移b位,最高位空出的b位补原来的符号位; 无符号右移 “ab;“将二进制形式的a逐位右移b位,最高位空出的b位补0。,移位运算符(2),移位运算符性质 适用数据类型:
6、byte、short、char、int、long,对低于int型的操作数将先自动转换为int型再移位 对于int型整数移位ab,系统先将b对32取模,得到的结果才是真正移位的位数 对于long型整数移位时ab ,则是先将移位位数b对64取模 通过测试得出什么结论:左移一位相当乘以2,左移两位相当相当乘以4.以此类推。,移位运算符(3),移位运算符应用举例,00000000 00000000 00001000 10110011,00000000 00000000 01000101 10011000,00000000 00000000 00000001 00010110,00000000 0000
7、0000 00000001 00010110,11111111 11111111 11110111 01001101,11111111 11111111 10111010 01101000,11111111 11111111 11111110 11101001,00011111 11111111 11111110 11101001,位运算符案例6,public class Test4_6public static void main(String args)int a=10int j = a3; int k = a32; System.out.println(“j=“ + j );System
8、.out.println(“k=“ +k );System.out.println(“m=“ +m ); ,位运算符案例7,public class Test4_7public static void main(String args)int a=-5;/(是5的反码+1)int j = a3; int k = a2; System.out.println(“j=“ + j );System.out.println(“k=“ +k );System.out.println(“m=“ +m ); ,赋值运算符(1),赋值运算符= 当“=“两侧的数据类型不一致时,可以适用默认类型转换或强制类型转换
9、原则进行处理long l = 100; int i = (int)l; 特例:可以将整型常量直接赋值给byte, short, char等类型变量,而不需要进行强制类型转换,只要不超出其表数范围byte b = 12; /合法byte b = 4096; /非法,基本数据类型自动转换,public class Test public static void main(String args)int i = (int)Math.pow(2,16) ; short s = -32768;/-3276832767char c = 65535; /065535 2 的16次方=65536System.
10、out.println(c); ,基本数据类型转换等级: byte-short,char - int - long float - double int - float long - double,赋值运算符(2),扩展赋值运算符,字符串连接运算符 +,“+“ 除用于算术加法运算外,还可用于对字符串进行连接操作int i = 300 +5;String s = “hello, “ + “world!“; “+“运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接int i = 300 +5;String s = “hello, ” +(
11、 i +12) + “号“;System.out.println(s); /输出:hello, 305号,表达式,表达式是符合一定语法规则的运算符和操作数的序列 a5.0 + a(a-b)*c-4i30 & i%10!=0 表达式的类型和值 对表达式中操作数进行运算得到的结果称为表达式的值 表达式的值的数据类型即为表达式的类型 表达式的运算顺序 首先应按照运算符的优先级从高到低的顺序进行 优先级相同的运算符按照事先约定的结合方向进行,三目运算符,三目条件运算符,语法格式: x ? y : z 其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值。 举例:int score = 50;int result = x 60 ? 60: x;String type = score 60 ? “不及格“ : “及格“;,运算符优先级,