>>:右移运算符,将左操作数向右移动,移位个数由右操作数决定
<<:左移运算符,将左操作数向左移动,移位个数由右操作数决定
>>>:无符号左移位运算符
eg:
int a = 8;
int b = a >> 1; //4
int c = a << 1; //8
--------------------------
int a1 = -2;
a1 = a1 >>> 1; //无符号左移位运算符
11111111 11111111 11111111 11111110 (-2)
01111111 11111111 11111111 11111111 (2147483647)
8.数据类型转换:当一个表达式中含有不同类型的数据时,需要用到类型转换
两种方式: 隐式转换 强制转换
隐式类型转换:见下图。在这个图中,黑色的实线表示在进行转换的时候,不会损失信息,而红色的虚线表示在转换时可能会引起信息的损失。
如果变量的长度不小于表达式的长度,则可进行赋值,称表达式是赋值兼容的。
强制类型转换(Cast,造型):强制类型转换,或者称为造型,用于显式的转换一个表达式的类型。
简单数据类型可以被进行强制类型转换。例如,将一个double类型的数据强制转换成int类型。
利用运算符“(type)var”进行强制类型转换。
除了简单类型外,引用类型也可以进行强制类型转换。
eg:
int a = 8;
long b = a ;
int c = b;//错误,不能将long转化为int类型。
int d = (int)b;
short s = 1;
s = s + 1; //不能编译通过
s += 1;//+=是运算符,可以编译通过。