美文网首页
日拱一卒:基本运算

日拱一卒:基本运算

作者: Tinyspot | 来源:发表于2023-02-22 20:25 被阅读0次

1. 运算符

  • 算数运算符
    • 两个操作数:+ - * / %
    • 一元运算符:++ -- 递增/递减
  • 赋值运算符
    • = += -= *= /= %=
  • 关系运算符
    • > < >= <= == !=
  • 逻辑运算符
    • && || !
    • 三元运算符 expression ? result1 : result2

1.1 运算符优先级

优先级 运算符 类型 结合性
1 ()
2 !   +(正)   -(负)   ++   -- 从右到左
3 *   /   % 算数运算符
4 +(加)   -(减) 算数运算符
5 <<   >>
6 >   >=   <   <= 关系运算符
7 ==   != 关系运算符
8 & 按位与
9 ^
10 |
11 && 逻辑运算符
12 || 逻辑运算符
13 ?: 条件运算符
14 =   +=   -=   *=   /=   %= 赋值运算符

补充:
逻辑非 > 逻辑与 > 逻辑或,比如 a || b && c 等价 a || (b && c)

2. 自增和自减运算符

运算符 含义
i++
++i
i--
--i

3. 复合运算

前置条件 int i = 12;
计算: i -= i
计算: i -= i *= i
计算: i *= i += i -= 1
计算: i += i -= i *= 1
计算: i += i -= i *= i

4. 其他

4.1 变量相加 vs 常量相加

@Test
public void add() {
    byte b1 = 1, b2 = 2, b;
    // 变量相加,b1,b2 会先做类型提升(int),再运算,最后将运算结果赋给b
    // 此时类型不匹配(int > byte)
    b = b1 + b2;
    
    // 常量相加,先计算结果,再赋值
    b = 1 + 2;
}

4.2 数据互换

/**
 * 数据互换,不引入临时变量
 * 加法和异或运算
 */
public void swap() {
    int x = 3, y = 5;
    x = x + y;
    y = x - y;
    x = x - y;
    // 两次都是 x-y
}

4.3 精度

@Test
public void test() {
    System.out.println(1/3); // 0
    
    System.out.println(1/3.0);
    // 0.3333333333333333, 不会打印无限循环小数,在能力范围(存储空间)内打印有限长度

    // boolean: true / false
    System.out.println(1 < 2 );

    // 缺省类型
    long var = 9999999999L;
    
    // 精度
    float f = 55.1111111f;
    double d = 55.1111111;
    System.out.println(f);
    System.out.println(d);
}

相关文章

网友评论

      本文标题:日拱一卒:基本运算

      本文链接:https://www.haomeiwen.com/subject/lboakdtx.html