运算符知识点总结

运算符

  运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。Java语言使用运算符将一个或者多个操作数连缀成可执行的语句。
  JAVA语言当中的运算符可分为以下几种:算数运算符赋值运算符比较运算符逻辑运算符位运算符类型相关运算符

1.算术运算符

  Java支持所有的基本算术运算符用于执行基本的数学运算:加、减、乘、除和取模。
  +:加法运算符,将两数据的值相加起来。此外,+ 还可以作为字符串的连接运算符。
   注意:byte + byte 以及short + short这种低于4个字节的类型,会先发生整形自动提升(int型)再参与计算。如果要将计算的值分别赋值给 byteshort类型的数据就需要使用到强制类型转换

  - :减法运算符,将两数据的值相减。
   - 除可以作为减法运算符之外,还能够作为求负的运算符,即求相反数。

  * :乘法运算符,将两数据的值相乘。

  \ :除法运算符,将两数据的值相除。
   注意:
   1. 如果除法运算符的两个操作数都是整数类型,则计算结果也为整数,即截断取整。
   2. 如果两个操作数都是整数类型,则除数不可以是0,否则会发生算数异常
   3. 如果两个操作数至少有一个是浮点数,则计算结果也为浮点数。此时,允许除数为0或者0.0,得到的结果就是正无穷大或者负无穷大

  % :求余运算符,它的计算结果是使用第一个操作数除以第二个操作数,得到一个整数结果后剩下来的值就是余数
   注意:
   1. 如果两个操作数都是整数类型,则求余运算的第二个操作数不可以是0,否则会发生算数异常
   2. 如果两个操作数至少有一个是浮点数,则计算结果也为浮点数。此时,允许除数为0或者0.0,得到的结果就是非数NaN
   3. 0或0.0对零以外的任何数求余都将得到0或0.0。

  ++ :自增运算符,自增是单目运算符,只能操作一个数。另外,自增运算符只能操作单个数值型(整型、浮点型)的变量,不能操作常量或表达式。自增分为前置++后置++。看代码:

    int a = 5 ;
    int b = 0 ;
    b = a++;
    System.out.println("a ="+ a +" ,b =" + b);
    a = 5;
    b = 0;
    b = ++a;
    System.out.println("a ="+ a +" ,b =" + b);
    -------------------------------------------
    输出结果:
    a = 6 ,b = 5
    a = 6 ,b = 6

   前置++ 先是将操作数自增1,然后将值赋值出去。
   后置++ 先是将操作数的值赋值出去,之后操作数自增1。

  - - :自减运算符,用法和上述的 自增运算符基本相似,仅为对操作数的值减1。

2.赋值运算符

   赋值运算符用于为变量指定变量值,使用 = 作为赋值运算符。赋值运算符是从右向左执行计算的,程序先计算得到赋值运算符右边的值,然后再将该值赋给左边的变量,因此赋值运算符左边的只能是变量。另外,赋值运算符还可以与其他运算符结合,成为更加强大的赋值运算符。例如 +=-= 、*= 、/=%=&=|=^=<<=>>=>>>=,这些运算符不仅拥有更好的性能,还能保证程序更加的健壮。

3.位运算符

   Java的位运算符有7种。
  &:按位与;|:按位或 ;~:按位非 ;^:按位异或。

第一个操作数第二个操作数按位与按位或按位异或
00000
01011
10011
11110

   按位非只需要一个操作数,这个位操作符在计算机底层的二进制码按位取反。

此位值按位非
01
10
例子:1001001101

  右移运算符 >>>>> ,对于 >> 来说,将操作数的二进制码右移指定位数后,左边空出来的位以原来的符号位进行填充。对于 >>> 来说,它是一个无符号右移运算符,它将操作数的二进制码右移指定位数后,左边均使用0来填充
  左移运算符 <<,将操作数的二进制码整体向左移指定位数,左移之后空出来的位以0填充。
   对于移位运算符有下列注意事项:
   1. 对于低于int 类型(如byte、short和char)的操作数总是先自动类型转换为int 类型再进行移位。
   2. 对于int类型的整数移位a>>b,当b>32时,系统会先用b 对32求余,得到真正的移位位数。例如 a>>33和a>>1的结果相同
   3. 对于long类型的整数移位 a>>b,当b>64时总是先对b 除以64求余得出真正的移位位数。

4.比较运算符

  比较运算符用于判断两个变量或者两个常量的大小,比较运算的结果是一个布尔值 (true或者false)。
   > :大于,仅支持左右操作数为数值类型,前者大于后者返回true,反之false。
   >= :大于等于,仅支持左右操作数为数值类型,前者大于等于后者返回true,反之false。
   < :小于,仅支持左右操作数为数值类型,前者小于后者返回true,反之false。
   <= :大于等于,仅支持左右操作数为数值类型,前者小于等于后者返回true,反之false。
   == :等于,如果进行比较的左右操作数为数值类型,即使他们的数据类型不相同,只要它们的值相等就会返回true例如,97=='a’返回true ,5.0 == 5返回true ,true == false将会返回false
   != :不等于,如果进行比较的左右操作数为数值类型,即使他们的数据类型不相同,只要它们的值相等就会返回true

5.逻辑运算符

  逻辑运算符有6种:&&&|||!^
  下面用表格来表述逻辑运算符:

表达式1表达式2&&||^
falsefalsefalsefalsefalse
falsetruefalsetruetrue
truefalsefalsetruetrue
truetruetruetruefalse

  &&:当表达式1为false时,则不执行表达式2;当表达式1位true时,执行表达式2,若为true则为true,反之为false。
  &:无论表达式1为true或false都会去判断表达式2的真假。
  || :当表达式1为true时,则不执行表达式2;当表达式1为false时,执行表达式2,若为false则为false,反之为true。
  | :无论表达式1为true或false都会判断表达式2的真假。
  因此,&&|| 又被称为短路与 和短路或

6.三目运算符

  三目运算符表达式为 表达式1 ? 表达式2 : 表达式3
  规则如下:先对逻辑表达式1求值,如果逻辑表达式1返回true,则返回表达式2操作数的值。如果逻辑表达式1返回false,则返回表达式3操作数的值。三目运算符可以进行嵌套,嵌套后的三目运算符可以处理更多复杂的情况。

	int a = 20;
	int b = 30;
	System.out.println(a > b ? 
					"a 大于 b" : (a < b ? "a 小于 b" : " a 等于 b"));
	---------------------------
	输出结果:
	a 小于 b

7.运算符的结合性和优先级

  Java语言中大部分运算符都是从左向右结合的,但只有单目运算符、赋值运算符和三目运算符例外,其中,单目运算符、赋值运算符和三目运算符是从右向左结合的。
例如:

	System.out.println(10 < 20 && 20 <30);

  此时就会很明显先计算10<20和20<30,在计算&,否则20&20这样的操作会发生语法错误。

	int a = 10;
	System.out.println(5 < a < 20);

  此例将无法通过编译,因为表达式先会执行 5 < a ,返回true。之后判断true<20,此时数据类型不相同,无法进行比较,编译就会不通过。
  结论:运算符之间是有优先级的,具体虽不必强行记忆,但需要在拥有歧义的代码当中适当使用括号来区分优先级。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值