Java基础之运算符

Java运算符可分为:

算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符、条件运算符与其他运算符。

算术运算符

进行数据计算

运算符

描述

例子

+

双目运算符,对两边操作数进行求和运算

a+b=c

-

双目运算符,对两边操作数进行求差运算

a-b=c

*

双目运算符,对两边操作数进行求积运算

a*b=c

/

双目运算符,对两边操作数进行求商运算

a/b=c

%

双目运算符,对两边操作数进行求余(取模)运算

a%b=c

byte/short在运算的时候会自动的提升为int,然后进行运算,运算结果为int。
同一个类型参与运算,结果的类型与参与运算的类型一致。
如果运算过程中有大类型参与了运算,结果一定是大类型
由于绝大部分小数在转化成二进制的时候是无限小数,所以double类型在存储小数的时候也没有办法精确存储,因此也没有办法来精确运算。
整数/0 :ArithmeticException(算数异常)。
任意非0数字/0.0或者是任意小数/0 :Infinity(无穷大)。
0/0.0->NaN-> Not a Number(非数字)NaN和任何值都不相等包括其本身。
判断一个对象是否是NaN只有一个方法isNaN();

允许对浮点数进行取模操作。

 public static void main(String[] args) {
    int a = 5;
    int b = 3;
    double c = 3.31;
    double d = 1.1;
    int w;
    double s;
    double z;
    //加 +
    System.out.println("<==========(+)==========>");
    w=a+b;
    s=a+c;
    z=c+d;

    System.out.println("int求和"+w);
    System.out.println("int double 求和"+s);
    System.out.println("double double 求和"+z);

    //减 -
    System.out.println("<==========(-)==========>");
    w=a-b;
    s=a-c;
    z=c+d;
    System.out.println("int 求差:"+w);
    //由于绝大部分小数在转化成二进制的时候是无限小数,所以double类型在存储小数的时候也没有办法精确存储,因此也没有办法来精确运算
    System.out.println("int double 求差:"+s);
    System.out.println("double double 求差:"+z);

    //乘 *
    System.out.println("<==========(*)==========>");
    w=a*b;
    s=a*c;
    z=c+d;
    System.out.println("int 求积:"+w);
    System.out.println("int double 求积:"+s);
    System.out.println("double double 求积:"+z);

    // 除 /
    System.out.println("<==========(/)==========>");
    w=a/b;
    s=a/c;
    z=c/d;
    System.out.println("int 求商:"+w);
    System.out.println("int double 求商:"+s);
    System.out.println("double double 求商:"+z);

    // 余(求莫) %
    System.out.println("<==========(%)==========>");
    w=a%b;
    s=a%c;
    z=c%d;
    System.out.println("int 求余(求莫):"+w);
    System.out.println("int double 求余(求莫):"+s);
    System.out.println("double double 求余(求莫):"+z);

    System.out.println("<==========任意非0数字/0.0或者是任意小数/0==========>");
    s = a/0.0;
    z = c/0;
    System.out.println("任意非0数字/0.0:"+s);
    System.out.println("任意小数/0:"+z);

}

自增自减运算符

自增(++):将变量的值加1,分前缀式(如++a)和后缀式(如a++)。前缀式是先加1再使用;后缀式是先使用再加1。

自减(--):将变量的值减1,分前缀式(如--a)和后缀式(如a--)。前缀式是先减1再使用;后缀式是先使用再减1。

运算符

描述

例子

++

单目运算符,对左边或右边数做加1运算

a++/++a 等同于a=a+1

--

单目运算符,对左边或右边数做减1运算

a--/--a 等同于a=a-1

符号在前 先运算再使用 符号在后 先使用再运算

赋值运算符

将运算符右边操作数的值赋给运算符左边的变量。

运算符

描述

例子

=

简单的赋值运算符,将右操作数的值赋给左侧操作数

a=b

+=

加和赋值操作符,把左操作数和右操作数相加赋值给左操作数

a+=c等同于c=c+a

-=

减和赋值操作符,把左操作数和右操作数相减赋值给左操作数

a-=c等同于c=c-a

*=

乘和赋值操作符,把左操作数和右操作数相乘赋值给左操作数

a*=c等同于c=c*a

/=

除和赋值操作符,把左操作数和右操作数相除赋值给左操作数

a/=c(同类型)等同于c=c/a

(%)=

取模和赋值操作符,把左操作数和右操作数取模后赋值给左操作数

a%=c等同于c=c%a

<< =

左移位赋值运算符

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

public static void main(String[] args) {
    int a = 10;
    int b = 20;
    int c;
    System.out.println("<===============(=)===============>");
    c = a + b;
    System.out.println("c = a + b = " + c);
    System.out.println("<===============(+=)===============>");
    c += a;
    System.out.println("c += a  = " + c);
    System.out.println("<===============(-=)===============>");
    c -= a;
    System.out.println("c -= a = " + c);
    System.out.println("<===============(*=)===============>");
    c *= a;
    System.out.println("c *= a = " + c);
    System.out.println("<===============(/=)===============>");
    a = 10;
    c = 15;
    c /= a;
    System.out.println("c /= a = " + c);
    System.out.println("<===============(%=)===============>");
    a = 10;
    c = 15;
    c %= a;
    System.out.println("c %= a  = " + c);
    System.out.println("<===============(<<=)===============>");
    c <<= 2;
    System.out.println("c <<= 2 = " + c);
    System.out.println("<===============(>>=)===============>");
    c >>= 2;
    System.out.println("c >>= 2 = " + c);
    c >>= 2;
    System.out.println("c >>= 2 = " + c);
    System.out.println("<===============(&=)===============>");
    c &= a;
    System.out.println("c &= a  = " + c);
    System.out.println("<===============(^=)===============>");
    c ^= a;
    System.out.println("c ^= a   = " + c);
    System.out.println("<===============(|= )===============>");
    c |= a;
    System.out.println("c |= a   = " + c);

}

关系运算符

系运算符对两个操作数进行比较,并返回比较结果,比较结果的值为一个布尔值(true或false)。

运算符

描述

例子

==

检查如果两个操作数的值是否相等,如果相等则条件为真。

(A == B)为假

!=

检查如果两个操作数的值是否相等,如果值不相等则条件为真。

(A != B) 为真

>

检查左操作数的值是否大于右操作数的值,如果是那么条件为真。

(A> B)为假

<

检查左操作数的值是否小于右操作数的值,如果是那么条件为真。

(A <B)为真

>=

检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。

(A> = B)为假

<=

检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。

(A <= B)为真或假

public static void main(String[] args) {
    int a = 10;
    int b = 20;
    int c= 10;
    System.out.println("<===============(== )===============>");
    System.out.println("a == b = " + (a == b)+"\na == c = " + (a == c) );
    System.out.println("<===============(!= )===============>");
    System.out.println("a != b = " + (a != b)+"\na != c = " + (a != c) );
    System.out.println("<===============(!= )===============>");
    System.out.println("a > b = " + (a > b)+"\na > c = " + (a > c) );
    System.out.println("<===============(!= )===============>");
    System.out.println("a < b = " + (a < b)+"\na < c = " + (a < c) );
    System.out.println("<===============(>= )===============>");
    System.out.println("b >= a = " + (b >= a) +"\na >= c = " + (a >= c));
    System.out.println("<===============(<= )===============>");
    System.out.println("b <= a = " + (b <= a) +"\na <= c = " + (a <= c));

}

逻辑运算符

逻辑运算符连接两个关系表达式或布尔变量,用于解决多个关系表达式的组合判断问题,返回的运算结果为布尔值。

运算符

描述

例子

&&

称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。

(a&&b)一假都假全真为真

||

称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。

(a||b)一真都真 全假为假

!

称为逻辑非运算符。用来反转操作数的逻辑状态。

(a&&b)为真!(a&&b)为假

public static void main(String[] args) {
    boolean a = true;
    boolean b = false;
    System.out.println("<===============(&&)===============>");
    System.out.println("a && b = " + (a&&b));
    System.out.println("<===============(||)===============>");
    System.out.println("a || b = " + (a||b) );
    System.out.println("<===============(! )===============>");
    System.out.println("!(a && b) = " + !(a && b));
    System.out.println("!(a || b) = " + !(a || b));
}

位运算符

应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。位运算符作用在所有的位上,并且按位运算。(菜鸟教程https://www.runoob.com/java/java-operators.html)

A = 0011 1100

B = 0000 1101-----------------

A&B = 0000 1100

A | B = 0011 1101

A ^ B = 0011 0001~A= 1100 0011

运算符

描述

例子

&

如果相对应位都是1,则结果为1,否则为0

(A&B),得到12,即0000 1100

|

如果相对应位都是 0,则结果为 0,否则为 1

(A | B)得到61,即 0011 1101

^

如果相对应位值相同,则结果为0,否则为1

(A ^ B)得到49,即 0011 0001

~

按位取反运算符翻转操作数的每一位,即0变成1,1变成0。

(〜A)得到-61,即1100 0011

<< 

按位左移运算符。左操作数按位左移右操作数指定的位数。

A << 2得到240,即 1111 0000

>>

按位右移运算符。左操作数按位右移右操作数指定的位数。

A >> 2得到15即 1111

>>> 

按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。

A>>>2得到15即0000 1111

public static void main(String[] args) {
    int a = 60; /* 60 = 0011 1100 */
    int b = 13; /* 13 = 0000 1101 */
    int c;
    System.out.println("<===============(&)===============>");
    c = a & b;       /* 12 = 0000 1100 */
    System.out.println("a & b = " + c);
    System.out.println("<===============(|)===============>");
    c = a | b;       /* 61 = 0011 1101 */
    System.out.println("a | b = " + c);
    System.out.println("<===============(^)===============>");
    c = a ^ b;       /* 49 = 0011 0001 */
    System.out.println("a ^ b = " + c);
    System.out.println("<===============(~)===============>");
    c = ~a;          /*-61 = 1100 0011 */
    System.out.println("~a = " + c);
    System.out.println("<===============(<<)===============>");
    c = a << 2;     /* 240 = 1111 0000 */
    System.out.println("a << 2 = " + c);
    System.out.println("<===============(>>)===============>");
    c = a >> 2;     /* 15 = 1111 */
    System.out.println("a >> 2  = " + c);
    System.out.println("<===============(>>>)===============>");
    c = a >>> 2;     /* 15 = 0000 1111 */
    System.out.println("a >>> 2 = " + c);
}

条件运算符

是为三元运算符,该运算符有3个操作数,并且需要判断布尔表达式的值决定应该赋值给哪个变量。

variable X = expression ? value  if true:value if false

public static void main(String[] args) {
    int a, b;
    a = 10;
    // 如果 a 等于 1 成立,则设置 b 为 20,否则为 30
    b = (a == 1) ? 20 : 30;
    System.out.println("Value of b is : " + b);
    // 如果 a 等于 10 成立,则设置 b 为 20,否则为 30
    b = (a == 10) ? 20 : 30;
    System.out.println("Value of b is : " + b);
    String c, d;
    c = "郑州";
    d = (c.equals("郑州")) ? "郑州" : "洛阳";
    System.out.println("Value of b is : " + d);
    d = (c.equals("luoy")) ? "郑州" : "洛阳";
    System.out.println("Value of b is : " + d);
}

instanceof contains运算符

该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。

(Object reference variable)instanceof(class/interface type)

(Object reference variable)contains(class/interface type)

Java运算符优先级

在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大。

类别

操作符

关联性

后缀

() [] . (点操作符)

左到右

一元

expr++ expr--

左到右

一元

++expr --expr + - ~ !

右到左

乘性 

* /%

左到右

加性 

+ -

左到右

移位 

>> >>>  << 

左到右

关系

> >= < <= 

左到右

相等 

==  !=

左到右

按位与

左到右

按位异或

^

左到右

按位或

|

左到右

逻辑与

&&

左到右

逻辑或

| |

左到右

条件

?:

右到左

赋值

= + = - = * = / =%= >> = << =&= ^ = | =

右到左

逗号

,

左到右

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java之眼

创作不易,一起努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值