java中的运算符

来源:互联网 发布:海信电视看电影软件 编辑:程序博客网 时间:2024/06/06 02:05

java运算符和表达式

  • 运算由表达式表示
  • 表达式:按一定的语法形式组成的自符序列
  • 表达式有运算符和运算分量组成
  • 运算分量可以是常量、变量、方法调用(方法的返回值)

一、运算符的分类

1、按功能可分为以下六类

  • 赋值运算符 如:=、+=、-=、*=、/=等
  • 算术运算符 如:+、-、*、/等
  • 关系运算符 如:==、!=、>、<、=<、>=等
  • 逻辑运算符 如:&&、||、~
  • 条件运算符 如:? :
  • 位运算符 如:&、|、!、^、<<、>>、>>>等

2、按操作数数量分位以下三类

  • 一元运算符 如:++、–、+(正)、-(负)
  • 二元运算符 如:+、-、*、/、%、<、>、<=、>=、<>
  • 三元运算符 如:? :

二、运算符的使用及注意事项

  1. 算数运算符
    • +: int a=5; int b=6; int sun = a+b;
    • -: int a=5; int b=6;int sub = a-b;
    • *: int a=5; int b=6; double multiply = a*b;
    • /: int a=5; int b=6; double div = a/b;
    • %: int a=5; int b=6; int mod = a%b;
      注意:
    • 注意前缀++(–)和后缀++(–)的区别,详情参见java中的自增和自减
    • 有些复杂的运算可以用java.lang.Math中的方法计算。
  2. 赋值运算符
    • =,+=,-=,*=,/=
    • String str = “hello!”;
    • int a = 5;
    • byte b = 111;
    • char c = 98;
    • char d = ‘哈哈哈’;
    • long l = 123456789l;
    • short st = 10;
    • int g=a=90;
    • int e+=a; //等价于e=e+a;
  3. 关系运算符
    • <,>,<=,>=,==,!=
    • ==进行比较的两个操作数都是数值型,如果它们的数据类型不同,只要它们的值相等,都返回true,例如:97==‘a’返回true,5.0==5也返回true。
    • 如果两个操作数是引用类型,只有当两个引用变量引用的相同类的实例时才可以比较,而且必须这两个引用指向同一个对象才会返回true。
  4. 逻辑运算符
    • !:非
    • &&:与,只有两个数同时为true时,才返回true。
    • ||:或,只要一个操作数为true,就会返回true;注意短路!
    • 短路:在java中的逻辑与(&&)和逻辑或(||)运算符采用“短路”方法进行计算,先求出运算符左边的表达式的值,对或运算如果为true,则整个表达式的结果为true,不必对运算符右边的表达式进行计算。同样,对与运算,如果左边的表达式的值为false,则不必对右边的表达式的值进行计算,整个表达式的值为false 。
  5. 位运算符

    • >>:右移,将操作数的够测很俄日禁止位右移若干位,低位溢出舍弃,高位补充原来高位的值。(相当于除2)
    • <<:左移,将操作数的构成二进制位左移若干位,高位溢出,低位补零。(相当于乘2).
    • >>>:无符号右移,将操作数的构成二进制位右移,低位溢出,高位补0.
    • &:按位与操作。
    • |:按位或操作。
    • ^: 按位异或操作。
    • ~:按位取反。
    • * 要理解>>和>>>的区别首先要了解计算机世界的三种编码方式*
    • 1.原码

    • 所谓原码就是符号位加上数字的二进制表示,int为例,第一位表示符号 (0正数 1负数)简单期间一个字节表示
      +7的原码为: 00000111
      -7的原码为: 10000111
      对于原码来说,绝对值相等的正数和负数只有符号位不同。

    • 2.原码

    • 一个数如果为正,则它的反码与原码相同;一个数如果为负,则符号位为1,(符号位不变化,其余位数取反)。
      换言之 该数的绝对值取反(绝对值取反各位都取反)。
      为了简单起见,我们用1个字节来表示一个整数:
      +7的反码为:00000111
      -7的反码为: 11111000

    • 3.补码

    • 补码:一个数如果为正,则它的原码、反码、补码相同;一个数如果为负,去到反码然后加1。(反码加1就是补码)为了简单起见,我们用1个字节来表示一个整数:
      +7的补码为: 00000111
      -7的补码为: 11111001

    • 4 . 总结
      • 原码:将最高位座位符号位,0表示正,1表示负,其余各位为数据位
      • 反码:一个数为正数,则反码和原码相同;为负则符号位为1其余各位对原码取反。
      • 补码:一个数为正数,则原码、反码、补码相同,为负则符号位为1,其余各位对原码取反后加1.
        所以>>和>>>的区别在于:>>将符号位保留,在符号位后面补充若干个0;而>>>则是直接在符号位之前添加若干个零。
  6. 条件运算符
    • 布尔表达式?表达式一:表达式二
      例如:
int i = 89;String str=i>60?"及格""不及格";System.out.println(str);//及格
  • instanceof
    • 用于判断某个对象是否是类或接口类型

三、运算符的优先级

运算符的优先级
注意:

  • 结合性是指运算符结合的顺序,通常都是从左到右从右到左的运算符最典型的就是负号,例如:1+-2,其意义为1加-2,符号首先和运算符右侧的内容相结合。
  • 要注意区分正负号和加减号,以及按位与和逻辑与的区别。
  • 在不清楚运算符的优先级是时要善用小括号()。
原创粉丝点击