♦算数运算符。如:加(+)、减(-)、乘(*)、除(/)。
♦比较运算符。如:等于(==)、大于(>)、小于(<)、大于或等于(>=)、小于或等于(<=)。
♦布尔运算符。如:短路与(&&)、短路或(||)、非(!)、逻辑与(&)、逻辑或(|)、异或(^)。
♦赋值运算符。如:等于(=)、加等(+=)、减等(=)、乘等(*=)、除等(/=)、与等(&=)、或等(|=)、异或等(^=)。
♦位运算符。如:与(&)、或(|)、异或(^)、取反(~)、左移(<<)、右移(>>,>>>)。
//5换算成二进制: 0000 0000 0000 0000 0000 0000 0000 0101
//5右移3位后结果为0,0的二进制为: 0000 0000 0000 0000 0000 0000 0000 0000 // (用0进行补位)
//-5换算成二进制: 1111 1111 1111 1111 1111 1111 1111 1011
//-5右移3位后结果为-1,-1的二进制为: 1111 1111 1111 1111 1111 1111 1111 1111 // (用1进行补位)
//-5无符号右移3位后的结果 536870911 换算成二进制: 0001 1111 1111 1111 1111 1111 1111 1111 // (用0进行补位)
//通过其结果转换成二进制后,我们可以发现,正数右移,高位用0补,负数右移,高位用1补,当负数使用无符号右移时,用0进行部位(自然而然的,就由负数变成了正数了)
♦其他运算符。如:三目运算符(?:)、加加(++)、减减(--)。
1 package com.jdk7.chapter1; 2 3 public class Operator { 4 /** 5 * 算数运算符 6 */ 7 public void computerOperator(){ 8 int a = 8; 9 int b = 5; 10 int result = a/b; //除数和被除数都为int,运算的结果为int类型 11 float f = a/b; //除数和被除数都为int,运算的结果为int类型,将int类型结果转换为float类型 12 double d = a/b; //除数和被除数都为int,运算的结果为int类型,将int类型结果转换为double类型 13 float f1 = a/(b*1.0f); //被除数为float类型,运算结果为float类型 14 double d1 = a/(b*1.0d); //被除数为double类型,运算结果为double类型 15 System.out.println("result = "+result+"; f = "+f+"; d = "+d+"; f1 = "+f1+"; d1 = "+d1); 16 } 17 /* 18 执行结果: 19 result = 1; f = 1.0; d = 1.0; f1 = 1.6; d1 = 1.6 20 */ 21 /** 22 * 比较运算符 23 */ 24 public void compareOperator(){ 25 int a = 8; 26 int b = 5; 27 System.out.println("(a==b) = "+(a==b)); 28 System.out.println("(a>b) = "+(a>b)); 29 System.out.println("(a<b) = "+(a<b)); 30 System.out.println("(a>=b) = "+(a>=b)); 31 System.out.println("(a<=b) = "+(a<=b)); 32 System.out.println("(a!=b) = "+(a!=b)); 33 } 34 /* 35 执行结果: 36 a、b、c至少一个为false 37 (a==b) = false 38 (a>b) = true 39 (a<b) = false 40 (a>=b) = true 41 (a<=b) = false 42 (a!=b) = true 43 */ 44 /** 45 * 布尔运算符 46 */ 47 public void booleanOperator(){ 48 boolean a = true; 49 boolean b = true; 50 boolean c = false; 51 if(a && b && c){ 52 System.out.println("a、b、c都为true"); 53 }else{ 54 System.out.println("a、b、c至少一个为false"); 55 } 56 int i = 2; 57 int j = 0; 58 //从左到右,只要有一个为false则&&后面的都不会执行,(j = i) == 2不会执行 59 if(c && (j = i) == 2){ 60 System.out.println("j = "+j); 61 }else{ 62 System.out.println("j = "+j); 63 } 64 //从左到右,每一个都会执行,(j = i) == 2会执行 65 if(c & (j = i) == 2){ 66 System.out.println("j = "+j); 67 }else{ 68 System.out.println("j = "+j); 69 } 70 71 if(a || b ||c){ 72 System.out.println("a、b、c至少一个为true"); 73 }else{ 74 System.out.println("a、b、c都为false"); 75 } 76 if(a ^ b){ 77 System.out.println("a、b值不同"); 78 }else{ 79 System.out.println("a、b值相同"); 80 } 81 if(a & b){ 82 System.out.println("a、b都为true"); 83 }else{ 84 System.out.println("a、b至少一个为false,a、b都有调用执行"); 85 } 86 if(a | b){ 87 System.out.println("a、b至少一个为true,a、b都有调用执行"); 88 }else{ 89 System.out.println("a、b都为false"); 90 } 91 if(!a){ 92 System.out.println("(!a) = "+(!a)); 93 } 94 } 95 /* 96 执行结果: 97 a、b、c至少一个为false 98 j = 0 99 j = 2 100 a、b、c至少一个为true 101 a、b值相同 102 a、b都为true 103 a、b至少一个为true,a、b都有调用执行 104 */ 105 /** 106 * 赋值运算 107 */ 108 public void fuZhiOperator(){ 109 int i = 4; 110 System.out.println("(i+=2) = "+(i+=2)); 111 System.out.println("(i-=2) = "+(i-=2)); 112 System.out.println("(i*=2) = "+(i*=2)); 113 System.out.println("(i/=2) = "+(i/=2)); 114 System.out.println("(i&=2) = "+(i&=2)); 115 System.out.println("(i|=2) = "+(i|=2)); 116 System.out.println("(i^=2) = "+(i^=2)); 117 } 118 /* 119 执行结果: 120 (i+=2) = 6 121 (i-=2) = 4 122 (i*=2) = 8 123 (i/=2) = 4 124 (i&=2) = 0 125 (i|=2) = 2 126 (i^=2) = 0 127 */ 128 /** 129 * 位运算 130 */ 131 public void byteOperator(){ 132 //5换算成二进制: 0000 0000 0000 0000 0000 0000 0000 0101 133 //5右移3位后结果为0,0的二进制为: 0000 0000 0000 0000 0000 0000 0000 0000 // (用0进行补位) 134 //-5换算成二进制: 1111 1111 1111 1111 1111 1111 1111 1011 135 //-5右移3位后结果为-1,-1的二进制为: 1111 1111 1111 1111 1111 1111 1111 1111 // (用1进行补位) 136 //-5无符号右移3位后的结果 536870911 换算成二进制: 0001 1111 1111 1111 1111 1111 1111 1111 // (用0进行补位) 137 //通过其结果转换成二进制后,我们可以发现,正数右移,高位用0补,负数右移,高位用1补,当负数使用无符号右移时,用0进行部位(自然而然的,就由负数变成了正数了) 138 139 int a = 8; //0000 0000 0000 0000 0000 0000 0000 1000 140 int b = 3; //0000 0000 0000 0000 0000 0000 0000 0011 141 int c = -3; //0000 0011->1111 1100->1111 1111 1111 1111 1111 1111 1111 1101 142 System.out.println("(a & b) = "+(a & b)); //0000 0000 143 System.out.println("(a | b) = "+(a | b)); //0000 1011 144 System.out.println("(a ^ b) = "+(a ^ b)); //0000 1011 145 System.out.println("(a << 2) = "+(a << 2)); //0010 0000 146 System.out.println("(a >> 2) = "+(a >> 2)); //0000 0010 147 System.out.println("(a >>> 2) = "+(a >>> 2)); //0000 0000 0000 0000 0000 0000 0000 0010 148 System.out.println("(c >>> 2) = "+(c >> 2)); //1111 1111 1111 1111 1111 1111 1111 1111->在计算机中表现为-1 149 System.out.println("(c >>> 2) = "+(c >>> 2)); //0011 1111 1111 1111 1111 1111 1111 1111 150 System.out.println("(~a) = "+(~a)); //1111 1111 1111 1111 1111 1111 1111 0111->-7在计算机中表现为补码-9 151 } 152 153 /* 154 执行结果: 155 (a & b) = 0 156 (a | b) = 11 157 (a ^ b) = 11 158 (a << 2) = 32 159 (a >> 2) = 2 160 (a >>> 2) = 2 161 (c >>> 2) = -1 162 (c >>> 2) = 1073741823 163 (~a) = -9 164 */ 165 public static void main(String[] args) { 166 Operator operator = new Operator(); 167 // operator.computerOperator(); 168 // operator.compareOperator(); 169 // operator.booleanOperator(); 170 // operator.fuZhiOperator(); 171 operator.byteOperator(); 172 173 } 174 175 }