运算符分成:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 其他运算符
一、算数运算符
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。
public class Main {public static void main(String[] args) {// 加法 + 相加运算符两侧的值// + 和字符串进行运算,起的是拼接作用System.out.println("1+2=" + (1 + 2));System.out.println("‘00‘+2=" + ("00" + 2));// 输出:// 1+2=3// ‘00‘+2=002//减法 - 左操作数减去右操作数System.out.println("10-1.9=" + (10 - 1.9));//输出:10-1.9=8.1//乘法 * 相乘操作符两侧的值System.out.println("2*3=" + (2 * 3));//输出:2*3=6//除法 / 左操作数除以右操作数//java中整数除于整数得到整数,产生的小数将强制去除//如果预计会出现小数,请使用双精度小数进行计算System.out.println("2/9=" + (2 / 9));System.out.println("5/3=" + (5 / 3));System.out.println("5.0/3=" + (5.0 / 3));System.out.println("5/3.0=" + (5 / 3.0));//被除数为0的,触发异常//System.out.println(2 / 0);// 输出:// 2/9=0// 5/3=1// 5.0/3=1.6666666666666667// 5/3.0=1.6666666666666667//取余 % 左操作数除以右操作数的余数System.out.println("2%9=" + (2 % 9));System.out.println("9%4=" + (9 % 4));// 输出:// 2%9=2// 9%4=1//自增运算 ++//++i; 表示先进行i=i+1后得到i的值//i++; 表示先得到i的值,在进行i=i+1;//自减运算符 -- 也同理int i = 1;System.out.println("i=1,2*++i=" + (2*++i));int j=1;System.out.println("j=1,2*j++=" + (2*j++));// 输出:// i=1,2*++i=4// j=1,2*j++=2 } }
二、关系运算符
关系运算符主要用于计算布尔运算的,返回值只有Boolean类型的值。
public class boolTest {public static void main(String[] args) {// == 检查如果两个操作数的值是否相等,如果相等则条件为真。System.out.println("1==1.0 " + (1 == 1.0));// != 检查如果两个操作数的值是否相等,如果值不相等则条件为真。System.out.println("1!=1 " + (1 != 1));// > 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。System.out.println("10.1>10 " + (10.1 > 10));// < 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。System.out.println("10.1<10 " + (10.1 < 10));// >= 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。System.out.println("10.1>=10 " + (10.1 >= 10));// <= 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。System.out.println("10.1<=10 " + (10.1 <= 10));} }
//结果:
// 1==1.0 true
// 1!=1 false
// 10.1>10 true
// 10.1<10 false
// 10.1>=10 true
// 10.1<=10 false
三、逻辑运算符
java中逻辑运算符分为:&、&&、|、||、!
&、&&表示:true&true=true、true&false=false、false&false=false;|、||表示:true|true=true、true&false=true、false&false=false;
!表示:翻转逻辑状态,例如:!true=fasle;
其中的单个逻辑运算符表示先计算在比较,双逻辑运算符如果左边表达式已经得出结果,则不计算右边表达式。
package test;public class AndOr {public static void main(String[] args) {boolean a = (1 == 1);System.out.println("双或:" + (a || m1(1)));System.out.println("单或:" + (a | m1(1)));}//这是用来测试是否调用了右边的表达式public static boolean m1(int num) {System.out.println("执行了m1()...");return num > 10;}/* 结果:双或:true执行了m1()...单或:true*/ }
四、位运算符
java定义的位运算符有
&:如果相对应位都是1,则结果为1,否则为0;
|:如果相对应位都是0,则结果为0,否则为1
^:如果相对应位值相同,则结果为0,否则为1
〜:按位取反运算符翻转操作数的每一位,即0变成1,1变成0。
<<:按位左移运算符。左操作数按位左移右操作数指定的位数。
>>:按位右移运算符。左操作数按位右移右操作数指定的位数。
>>>:按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。
package test;public class BitOper {public static void main(String[] args) {int a = 4;// 4 = 0100int b = 13;// 13 = 1101// & 如果相对应位都是1,则结果为1,否则为0// 0100 & 1101 = 0100System.out.println("4&13=" + (a & b));// | 如果相对应位都是0,则结果为0,否则为1// 0100 | 1101 = 1101System.out.println("4|13=" + (a | b));// ^ 如果相对应位值相同,则结果为0,否则为1// 0100 ^ 1101 = 1001System.out.println("4^13=" + (a ^ b));// ~ 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。// ~0100 = 1011System.out.println("~4=" + (~a));// << 按位左移运算符。左操作数按位左移右操作数指定的位数。// 0100<<2=0001 0000System.out.println("4<<2=" + (a<<2));// >> 按位右移运算符。左操作数按位右移右操作数指定的位数。// 0100>>2=0001System.out.println("4>>2=" + (a>>2));// >>> 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。// 1100>>>2=0011System.out.println("12>>>2=" + (12>>>2));} }
打印结果:
4&13=4 4|13=13 4^13=9 ~4=-5 4<<2=16 4>>2=1 12>>>2=3
五、赋值运算符
赋值运算符包括 =、+=、-=、*=、/=、%=、<<=、>>=、&=、|=、^=
其中:
= 表示把 右边的值赋值给左边;
a+=b 等同于 a=a+b;
a-=b 等同于 a=a-b;
a*=b 等同于 a=a*b;
a/=b 等同于 a=a/b;
a%=b 等同于 a=a%b;
a<<=b 等同于 a=a<<b;
a>>=b 等同于 a=a>>b;
a&=b 等同于 a=a&b;
a|=b 等同于 a=a|b;
a^=b 等同于 a=a^b;