运算符

算术运算符:

  1. +:加号有两种使用方式
    (1) 两边是数值类型,则进行加和;
    (2) 有一边是字符串类型则进行字符串拼接,整体变成字符串类型。
  2. /:除法,左操作数除以右操作数,结果取整数,小数舍弃
  3. %:取余,左操作数除以右操作数的余数,结果取余数。
    5/3=1;-5%3=-2;-5%-3=-2;5%-3=2;5%3=2;
  4. ++:自增1,--类似
    a++:先取值运算再自增;
    ++a:先自增再取值运算;
    (考)
int a=1;
a=a++;
System.out.println(a);
//1
int j=0; 
for(int i=0;i<100;i++){ 
 j=j++;
}
System.out.println(j);
//0 ,取 j 的值准备为 j 赋值,但由于++运算符优先级高于赋值运算符,
//于是先自增1后,再将第一步取出来的0赋给j,所以 j 一直等于0.
  1. 其他:-、*。

关系运算符(得到布尔值)

  1. ==:检查如果两个操作数的值是否相等,如果相等则条件为真。注意和赋值运算符"="区分。
  2. !=:检查如果两个操作数的值是否相等,如果值不相等则条件为真。
  3. 其他:<、>、<=、>=。

逻辑运算符

  1. &&:(一假则假)
    逻辑与:当且仅当两个操作数都为真,条件才为真。
    短路于:A&&B,当AB均为真时结果才为真,当A为假后结果必定为假,这是就不会再判断B了。
  2. ||:(一真则真)
    逻辑或:如果任何两个操作数任何一个为真,条件为真。
    短位或:A||B,当AB有一为真时结果才为真,当A为真后结果必定为真,这是就不会再判断B了。
  3. !:用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。
    (考)
int a=1,b=1;
System.out.println(b);
System.out.println(a>1||--b>1);
//0,false

//一真则真
int a=1,b=1;
System.out.println(b);
System.out.println(a==1||--b>1);
//1,true

//一假则假
int a=1,b=1;
System.out.println(b);
System.out.println(a>1&&--b>1);
//1,false
int a = 0x9af700; //1001 1010 1111 0111 0000 0000 00
a <<= 2;
//0x26bdc00

位运算符

  1. &:按位与,按照对应位相与,只有1&1才得1。
  2. |:按位或,按照对应位相或,只有0|0才得0。
  3. ~:按位取反,翻转操作数的每一位,即0变成1,1变成0。
  4. Λ:异或运算,不同则为1(0^1==1),一个数连续异或另一个数两次,等于啥也没发生。

条件(三元)运算符

  1. 基本使用
public class HelloWorld {
  public static void main(String []args) {
      int s =99;
      System.out.println(s<60?"不及格":(s<80?"及格":(s<90?"良":"优秀")));
   }
}
  1. 嵌套使用
public void test5(int a) {
      char grade =(a>=90?'A':(a>=60?'B':'C'));
      System.out.println(grade);
}

运算符优先级

从上到下优先级依次降低

类别 操作符 关联性
后缀 () [] . (点操作符) 左到右
一元 expr++ expr-- 从左到右
一元 ++expr --expr + - ~ ! 从右到左
乘性 * /% 左到右
加性 + - 左到右
移位 >> >>> << 左到右
关系 > >= < <= 左到右
相等 == != 左到右
按位与 左到右
按位异或 ^ 左到右
按位或 | 左到右
逻辑与 && 左到右
逻辑或 || 左到右
条件 ?: 从右到左
赋值 = += -= *= /= %= =>>= <<= &= ^= |= 从右到左
逗号 左到右

你可能感兴趣的:(运算符)