现在的位置: 首页 > 综合 > 正文

java基础知识笔记

2013年10月24日 ⁄ 综合 ⁄ 共 773字 ⁄ 字号 评论关闭

<<,有符号的左移位操作;左移之后的空位用0补充。

>>,有符号的右移位操作;右移之后的空位用符号位补充,如果是正数用0补充,负数用1补充。(逻辑右移)

无符号的移位只有右移,没有左移使用“>>>”进行移位,都补充0 ,也叫算术右移;

移位操作的数据类型可以是byte, char, short, int, long型,但是对byte, char, short进行操作时会先把它们变成一个int型,最后得到一个int型的结果,对long型操作时得到一个long型结果,不可以对boolean型进行操作。

移位操作符可以和=合并起来,即 <<= 、 >>= 和 >>>=。例如 a >>= 2; 表示将a右移两位后的值重新赋给a。

当时在使用这三个操作符对 byte, char, short型数据进行操作时要注意,如下代码:

public class ShiftTest
{
public static void main(String [] args)
{
byte a;
byte b;
byte c;
a = 127;
b = 127;
c = 127;
a <<= 2;
System.out.println(a);
System.out.println(b <<= 2);
System.out.println(c << 2);
}
}

运行结果是:
-4
-4
508

这说明了在操作a <<= 2 执行过程是这样的:先将 byte型的数 127变成int型,左移2位得到 508,然后把508赋给byte型变量a时只是简单地"折断"(truncate)得到数-4。编译时编译器不会提示你可能损失精度(实际上在本例中确实是损失精度了),但是如果你把a <<= 2改成 a = a << 2;编译器就会提示可能损失精度了。

char 是16位无符号整数,值是unicode编码

UTF-8 :变长编码1~N方案,英文1byte,中文3byte

序列化:将数据转换成n个byte叫序列化

--

优秀是一种习惯

抱歉!评论已关闭.