zoukankan      html  css  js  c++  java
  • Java 基础-运算符

    1. char ch = '您'

    char类型的数据是两个字节

    一个汉字是两个字节,由16个二进制组成的. 所以char类型的数据可以装中文

    2.

    short s = 3;

    s= s+2; 和  s += 2; 有什么区别?

    答:s= s+2; 编译失败因为s+ 2 时s会被提升为int类型,运算后的结果还是int类型,无法赋值给shot类型。 int类型是32个二进制位,四个字节, shot是16个二进制位2个字节,所以编译时会精度丢失的异常

    而 s += 2 编译通过,+=运算符在给s赋值时自动完成了强转操作。

    在JAVA中一共有八种基本数据类型,他们分别是 byte、short、int、long、float、double、char、boolean 
    其中byte、short、int、long都是表示整数的,只不过他们的取值范围不一样 
    byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1) 
    short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1) 
    int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1) 
    long的取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1)

    3.逻辑运算符  -- 用于连接Boolean类型的表达式

    & 与 :  true & true = true; true & false = false;  false & false = false;   特点: 都为真才是真

    | 或:  true | true = true; true | false = true; false | false = false;  特点: 只要有一个为真就是真

    ^ 异或 :  true ^  true = false; true ^  false = true; false ^ false = false;  特点:两边相等结果是假,两边不同才是真;  可以参与位运算

    ! 非: !true = false;

    && 与 (短路功能)

    & 和 && : 1. &无论左边是真是假,右边都运算; && 当左边为假时,右边不再运算,结果就是假  2. &可以参与位运算,

    | 和 || :1 .  | 两边都参与运算; || 当左边为真,右边不运算; 2. | 可以参与位运算

    4. 位运算符:左移,右移,无符号右移

    << 左移 : 其实是乘以2的n次幂

    >> 右移: 其实除以2n次幂,最高位补什么由原有数据的最高位值定: 如果最高位是0,右移后,用0补空位;如果最高位为1,右移后用1补空位

    >>> 无符号右移:无论最高位是什么,右移后,都用0补

    例如:

    3<<2 的运算过程:

        3的二进制:         0000-0000 0000-0000 0000-0000 0000-0011

       左移两位:        0000-0000 0000-0000 0000-0000 0000-0011        两个高位00舍弃

      空位补0:              0000-0000 0000-0000 0000-0000 0000-1100      =12

    6>>2 的运算过程:

      6的二进制:          0000-0000 0000-0000 0000-0000 0000-0110

     右移两位:                 0000-0000 0000-0000 0000-0000 0000-0110  两个低位10舍弃

    空位补0:                0000-0000 0000-0000 0000-0000 0000-0001   = 1

    6 & 3 = 2的运算过程:110  &  011 = 010

    6 | 5 =  7 的运算过程: 110  |  101 =  111

    6 ^ 5  = 3 的运算过程: 110  |  101 =  011

     ~ 反码: 

    ~6的运算过程:

    6的二进制:          0000-0000 0000-0000 0000-0000 0000-0110

    取反                       1111-1111  1111-1111   1111-1111  1111-1001  = -7

    求取反后的十进制结果:(减一再取反)

    减一                       0000-0000 0000-0000 0000-0000 0000-0001

      减一的结果           1111-1111  1111-1111   1111-1111  1111-1000

    取反                      0000-0000 0000-0000 0000-0000 0000-0111  = 7

     因为1111-1111  1111-1111   1111-1111  1111-1001 减一再取反后结果是7 ,所以1111-1111  1111-1111   1111-1111  1111-1001就是-7 也就是 ~6 = -7

    负数的表现形式:  例如:-6的表现形式是 6取反加1  也就是 -6 = ~6+1 = -7 + 1

  • 相关阅读:
    为了实现在线库的复杂查询,你还在双写吗?
    双11核心系统100%上云 !阿里数据库处理峰值远超传统厂商
    每秒8700万次!双11数据库峰值新纪录背后的关键力量
    最强CP!阿里云联手支付宝小程序如何助力双11?
    .net IAsyncResult 异步操作
    .net Reflection(反射)- 二
    .net Reflection(反射)- 一
    .net 空接合操作符 ??
    .net 基元类型,引用类型和值类型
    .net List<T>
  • 原文地址:https://www.cnblogs.com/yuan1225/p/8276728.html
Copyright © 2011-2022 走看看