1 package com.pp.test; 2 public class Demo2 { 3 public static void main(String[] args) { 4 5 // 运算符: 6 // a:按功能分: 7 // 1.算术运算符 + - * / % ++ -- 8 System.out.println(-3/-2);//计算机中的除法跟普通的一致,切记整除相除为整数,小数相除为小数 9 System.out.println(-3%2); 10 System.out.println(3%-2);//余数的符号跟被除数保持一致 11 int a= 2,b=3,c,d; 12 c = a++; 13 d = ++b; 14 //++在变量后面时,变量会先赋值再加一 15 //++在前面的时候,先加一再赋值 16 System.out.println(a+" "+b+" "+c+" "+d); 17 18 // 2.赋值运算符 = += -= *= /= 19 int w = 4,y = 4;// = 右结合性,优先级最低 20 y += 3;//变量必须先赋值再使用 21 22 //实例 23 int n=2,m=3,x,z=1; 24 x = n++ - --m +(z++ - n--); 25 System.out.println(x+" "+n+" "+m+" "+z); 26 /** 27 * 题目分析:先考虑优先级,再考虑结合性,先考虑优先级低的运算符,使用排除法 28 * 将符合条件的运算符找出来,再一步步进行运算 29 * 1.先考虑=号,使用排除法,根据右结合性,去算=右边的 30 * 2.判断-+好,优先级最低并且相同,是左结合性 31 * 3.先算n++ n=3 n++ = 2 32 * 4.--m m=2 --m =2 33 * 5.算() (1 - 3) z=2 n=2 34 * 6.算-+号 2-2+(1-3) = -2 35 * 7 算= 36 * */ 37 38 // 3.关系运算符== < > <= >= != 39 //特点:true/false 40 41 // 4.逻辑运算符&& || ! 42 //特点:结果只有true/false,运算符的两边元素也只有true和false 43 //&&(与) 全真为真,一假为假 44 //||(或)一真为真,全假为假(类似于数学中的) 45 //由此可以发现,只需要判断出相应的真和假就能发生短路,是代码执行优化一些,不至于太过复杂 46 //注意事项(程序中断只适用于全&& 全||) 47 int q = 1; 48 @SuppressWarnings("unused") 49 boolean istrue = 2<3 && 3>4 && 2<3 || q++>3; 50 System.out.println(istrue +" "+q); 51 // 5.位运算符:(直接操作位)&(按位与 全1则1 有0则0) |(按位或 全0则0 有1则1) 52 // ^(按位异或 运算的当前位相同结果是0,不同结果为1) 53 // ~(按位取反 0就是1 1就是0) 54 //为什么使用位运算符: 55 //电脑运行速度快,效率高,直接操作二进制 56 57 58 //交换两个数的值 59 /** 60 * 61 * 方法1:借助变量 62 * 63 * 方法2.使用^运算符 好处:不需要中间的三方变量 64 * 65 * */ 66 int k1 = 3,k2=4,temp; 67 k1 = k1^k2; 68 k2 = k1^k2; 69 k1 = k1^k2; 70 System.out.println(k1+" "+k2); 71 // 6.移位运算符 >>1(右移一位) <<1(左移一位) >>>1(无符号右移一位) 72 //右移除以2 左移乘以2 73 System.out.println(5>>1); 74 // 75 } 76 77 }