Java 学习之位操作

《Head First Java》附录B,阅读笔记。

位操作

Java 中位操作符有七个。

按位非运算符:~

1
2
int x = 10; // 00001010
x = ~x; // 11110101,即 -11(补码:11110101->反码:11110100->原码:10001011)

按位与运算符:&

两个位同为 1 才返回 1,否则返回 0

按位或运算符:|

两个位只要有一个是 1 就返回 1

按位异或运算符:^

两个位相同则返回 0 ,否则返回 1

右移运算符:>>

无符号右移运算符:>>>

左移运算符:<<

断言

Java 程序运行时,如果没有特别指定的话,被加入到程序中的 assert 命令会被 Java 虚拟机忽略。那么怎么指定启用 assert 命令呢?

1
2
javac TestdriveGame.java // 编译
java -ea TestDriveGame // 运行时需要指定启用断言

String 的不变形

String 对象生成之后就会放在“String Pool”的特殊存储区,并留着复用(包装类型对象也是这样的),“String Pool”不受 Garbage Collector 管理。所以使用 String 对象做字符串的大量增删改查时会对内存空间造成浪费,这种时候得使用 StringBuilder,如果需要线程安全的话就得使用 StringBuffer。