运算符
算术运算符
单目:+(取正)-(取负)++(自增)--(自减)
双目:+(加)-(减)*(乘)/(除)%(取余)
三目:x > y ? true : false 说明:?前是一个布尔表达式:前后需要有两个表达式、对象、值;
位运算符
先转化成二进制再进行运算
位与(&)位非(~)位或(|)位异或(^)
移位运算符:<<、 >>(有符号右移) 、 >>>(无符号右移)
左移1位相当于乘以2,右移1位相当于除以2,比乘除运算效率更高
比较运算符
==、!=、>、<、>=、<=
比较基本数据类型是比较值,比较引用类型是虚地址
除了==、!=外,都只能比较基本数据类型
逻辑运算符
用于连接两个boolean类型的表达式
&(与):前后条件都必须执行判断;条件必须同时满足
&&(短路与):如果前面条件为false,后面条件就不执行判断,如果前面条件为true,后面条件继续执行判断
|(或):前后条件都要执行判断,只要满足其中一个
||(短路或):当第一个条件为true,后面条件不执行判断,如果前面条件为false,后面条件继续执行判断
^(异或)!(非运算)
代码示例
1 package summary3; 2 3 //运算符 Operator 4 public class Operator 5 { 6 void arithmetic() //算术运算符 7 { 8 int i = 10; //三目运算符 9 String s = (i%2==0) ? ("i是偶数") : ("i是奇数"); //通过%2获取i的余数、判断是否为零 10 System.out.println(s); //如果等于零返回“偶数”,否则“奇数” 11 } 12 13 void position() //位运算符 14 { 15 int i1 = 10; //转换为二进制后计算 0000 1010 =10 16 int j1 = i1<<1; //左移1位(相当于乘2) 0001 0100 =20 17 int j2 = i1>>1; //右移1位(相当于除2) 0000 0101 =5 18 int j3 = i1>>>1; //无符号右移一位 19 System.out.println("j1="+j1+" j2="+j2+" j3="+j3); 20 21 System.out.println(13&14); //输出12 22 //13转换为二进制:0000 1101 23 //14转换为二进制:0000 1110 24 //12转换为二进制:0000 1100 25 //位与:第一个操作数的的第n位于第二个操作数的第n位,如果都是1,那么结果的第n为也为1,否则为0 26 27 System.out.println(13|14); //输出15 28 //13转换为二进制:0000 1101 29 //14转换为二进制:0000 1110 30 //15转换为二进制:0000 1111 31 //位或:第一个操作数的的第n位于第二个操作数的第n位,只要有一个是1,那么结果的第n为也为1,否则为0 32 33 System.out.println(13^14); //输出3 34 //13转换为二进制:0000 1101 35 //14转换为二进制:0000 1110 36 // 3转换为二进制:0000 0011 37 //异或:第一个操作数的的第n位于第二个操作数的第n位,只要有一个是0,那么结果的第n为也为1,否则为0 38 39 System.out.println(~13); //输出-14 40 // 13转换为二进制:0000 1101 41 //-14转换为二进制:1111 0010 42 //位非:操作数的第n位为1,那么结果的第n位为0,反之。 43 } 44 45 void compare() //比较运算符 46 { 47 Integer ie1 = new Integer(123); 48 Integer ie2 = new Integer(123); 49 int i1 = ie1; //包装类的自动拆装 50 int i2 = ie2; //相同类型自动转换 51 System.out.println(i1==i2); //基本类型比较的是具体值、判断条件成立:返回true 52 System.out.println(ie1==ie2); //引用类型比较的是虚地址、判断条件不成立:返回false 53 } 54 55 void logic() //逻辑运算符 56 { 57 if((1>0)&(1!=0)) //双与:& 58 System.out.println("与");//前后条件都必须执行判断;条件必须同时满足 59 60 if((1<0)&&(1!=0)) //短路与:&& 61 System.out.println("短路与");//如果前面条件为false,后面条件就不执行判断,如果前面条件为true,后面条件继续执行判断 62 63 if((1<0)|(1!=0)) //或:| 64 System.out.println("或");//前后条件都要执行判断,只要满足其中一个 65 66 if((1<0)||(1==0)) //短路或:|| 67 System.out.println("短路或");//当第一个条件为true,后面条件不执行判断,如果前面条件为false,后面条件继续执行判断 68 69 } 70 public static void main(String[] args) 71 { 72 Operator o = new Operator(); 73 o.arithmetic(); //算术运算符 74 o.position(); //位运算符 75 o.compare(); //比较运算符 76 o.logic(); //逻辑运算符 77 } 78 }
浙公网安备 33010602011771号