00007_运算符
1、算术运算符
(1)运算符是用来计算数据的符号。数据可以是常量,也可以是变量。被运算符操作的数我们称为操作数 ;
(2)算术运算符最常见的操作就是将操作数参与数学计算;
(3)使用算术运算符的注意事项:
①加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串;
②除法“/”当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相除;
③“%”为整除取余符号,小数取余没有意义。结果符号与被取余符号相同;
④整数做被除数,0不能做除数,否则报错;
⑤代码演示:
1 /* 2 * 算术运算符 3 */ 4 public class OperatorDemo1 { 5 public static void main(String[] args) { 6 /* 7 * 常量使用算数运算符 8 */ 9 System.out.println(10+20); 10 11 /* 12 * 变量使用算数运算符 13 */ 14 int x = 10; 15 int y = 20; 16 //"+"作为加法运算使用 17 int z = x + y; 18 //"+"作为连接字符串使用 19 System.out.println("x="+x); 20 System.out.println("y="+y); 21 System.out.println("z="+z); 22 } 23 }
运行结果:
2、算术运算符++、--的使用
(1)++运算符,会在原有值的基础上自增1;
(2)--运算符,会在原有值的基础上自减1;
(3)++,--运算符单独使用,不参与运算操作时,运算符前后位置导致的运算结果是一致的;
(4)++,--运算符后置时,先使用变量a原有值参与运算操作,运算操作完成后,变量a的值自增1或者自减1;
1 int a = 3; 2 int b; 3 b = a++ + 10; 4 System.out.println(a);//4 5 System.out.println(b);//13
(5)++,--运算符前置时,先将变量a的值自增1或者自减1,然后使用更新后的新值参与运算操作。
1 int a = 3; 2 int b; 3 b = ++a + 10; 4 System.out.println(a);//4 5 System.out.println(b);//14
3、赋值运算符
(1)赋值运算符就是为变量赋值的符号:
(2)诸如+=这样形式的赋值运算符,会将结果自动强转成等号左边的数据类型;
(3)代码演示:
1 /* 2 * 赋值运算符 3 * +=, -=, *=, /=, %= : 4 * 上面的运算符作用:将等号左右两边计算,会将结果自动强转成等号左边的数据类型,再赋值给等号左边的 5 * 注意:赋值运算符左边必须是变量 6 */ 7 public class OperatorDemo2 { 8 public static void main(String[] args) { 9 byte x = 10; 10 x += 20;// 相当于 x = (byte)(x+20); 11 System.out.println(x); 12 } 13 }
运行结果:
4、比较运算符
(1)比较运算符,又叫关系运算符,它是用来判断两个操作数的大小关系及是否相等关系的,结果是布尔值true或者false ;
(2)赋值运算符的 = 符号与比较运算符的 == 符号是有区别的:
①赋值运算符的 = 符号,是用来将 = 符号右边的值,赋值给 = 符号左边的变量;
②比较运算符的 == 符号,是用来判断 == 符号左右变量的值是否相等的。
1 int a = 3; 2 int b = 4; 3 System.out.println( a=b );//4 4 System.out.println( a==b );//false
5、逻辑运算符
(1)逻辑运算符,它是用于布尔值进行运算的,运算的最终结果为布尔值true或false;
(2)逻辑运算符通常连接两个其他表达式计算后的布尔值结果;
(3)当使用短路与或者短路或时,只要能判断出结果则后边的部分就不再判断;
1 boolean b = 100>10; 2 boolean b2 = false; 3 System.out.println(b&&b2); // 打印结果为 false 4 System.out.println(b||b2); //打印结果为 true 5 System.out.println(!b2); //打印结果为 true 6 System.out.println(b && 100>10); //打印结果为 true
(4)短路与&&:参与运算的两边数据,有false,则运算结果为false;
(5)短路或||:参与运算的两边数据,有true,则运算结果为true;
(6)逻辑非! : 参与运算的数据,原先是true则变成false,原先是false则变成true。
6、三元运算符
(1) 格式: (条件表达式)?表达式1:表达式2;
(2)三元运算符运算规则
①先判断条件表达式的值;
②若为true,运算结果为表达式1;
③若为false,运算结果为表达式2 。
1 方式一: 2 System.out.println( 3>2 ? “正确” : “错误” ); 3 // 三元运算符运算后的结果为true,运算结果为表达式1的值“正确”,然后将结果“正确”,在控制台输出打印 4 5 方式二: 6 int a = 3; 7 int b = 4; 8 String result = (a==b) ? “相等” : “不相等”; 9 //三元运算符运算后的结果为false,运算结果为表达式2的值“不相等”,然后将结果赋值给了变量result 10 11 方式三: 12 int n = (3>2 && 4>6) ? 100 : 200; 13 //三元运算符运算后的结果为false,运算结果为表达式2的值200,然后将结果200赋值给了变量n
7、运算符优先级
(1)下图是每种运算符的优先级,按照运算先后顺序排序(优先级相同的情况下,按照从左到右的顺序依次运算);
(2)代码演示:
1 int a = 5; 2 int b = 3; 3 int c = 1; 4 int n2 = (a>b && b>c) ? (c++) : (++c); 5 /* 1.小括号优先级高,我们先运算第一组小括号中的代码 6 1.1. 比较运算符”>” 优先级大于 逻辑运算符”&&” 7 先执行 a>b,得到结果true; 8 再执行 b>c,得到结果true; 9 最后执行 a>b的结果 && b>c的结果,即 true && true, 结果为true 10 2.三元运算符中的条件判断结果为true,返回表达式1的结果 c++ 11 先将变量c的原有值赋值给变量n2,即n2值为1; 12 再将变量c的值自增1,更新为2。 13 */ 14