• 大数据学习--day03(运算符、流程控制语句)


    运算符、流程控制语句

    自增自减容易出错的地方:

    扩展的赋值运算符
     a+=b 等同于 a = a+b;
     扩展的赋值运算符 隐含了一个类型的强制转换

     & && 有何区别

      & : 当左边的表达式结果为false时 , 仍旧判断执行右边的表达式
      && :当左边的表达式结果为false时 , 不去判断执行右边的表达式

     | || 有何不同之处

      | : 当 左边的表达式结果为 true 时 , 仍然会对右边的表达式进行 执行判断
      ||: 当 左边的表达式结果为 true 时 , 不会会对右边的表达式进行 执行判断

    三目运算符:

    位运算符

     只能操作整型
     使用位运算符时 会把 byte char short 先自动提升到 int

     << 左移

      x << y 等价于 x * 2^y

     >> 右移

       x >> y 等价于 x / 2^y
     
     例如 
        5 >> 1 == 5 / 2^1
        0 0000101 5
        0 0000010 右移一位 前面补的是符号位 -> 2
        0 0000001 右移二位 前面补的是符号位 -> 1
     
    负数右移
        1 0000101 -5 补码
        1 0000100 反码
        1 1111011 原码 
        
        1 1111101 原码右移一位 补符号位
       反码1 0000010
       补码1 0000011 == -3
        1 1111110 原码右移二位 补符号位
       反码1 0000001
       补码1 0000010 == -2
     

     >>> 无符号右移

      之前的 >> , 正数负数补的是符号位 , 无符号右移补 0
      >>> >> 如果操作的正数 , 那么完全一样 , 操作的负数 差距很大
     
      -5 >>> 1 == 2147483645 
      
      1 24个0 0000101 -5补码
      1 24个0 0000100 -5反码
      1 24个1 1111011 -5原码
      0 24个1 1111101 右移一位 补0
       得出结果 2147483645
     
    if语句同c#不讲了
  • 相关阅读:
    LeetCode12: 整数转罗马数字
    LeetCode11:盛最多水的容器
    LeetCode09:判断回文数
    LeetCode08:字符串转换成整数
    LeetCode04:寻找中位数
    LeetCode03:无重复字符的最长子串
    《JAVA编程思想》第四版 PDF 下载 中文版和英文版 高清PDF扫描带书签
    XML
    异常
    委托和匿名方法和Lambda表达式
  • 原文地址:https://www.cnblogs.com/symkmk123/p/9634384.html
Copyright © 2020-2023  润新知