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

 

posted @ 2018-01-16 09:13  wangyy  阅读(180)  评论(0编辑  收藏  举报