Java数据类型与位运算
Java数据类型与位运算
数据类型
Java中的数据类型分为两大类:基本数据类型和引用数据类型。
基本数据类型
Java的基本数据类型包括整型、浮点型、字符型和布尔型等。
- 整型(integers): 整型数据用于表示整数,常见的整型数据类型包括
byte
、short
、int
和long
。它们分别占用不同字节大小的内存空间,范围从8位到64位。 - byte: 8bit [-128, 127] 默认:0
- short: 16bit [-32768, 32767] 默认:0
- int: 32bit [-2^31, 2^31-1] 默认:0
- long: 64bit [-2^63, 2^63-1] 默认:0L
- 浮点型(floating-point numbers): 浮点型数据用于表示小数,主要有
float
和double
两种类型。float
类型占用32位内存,而double
类型占用64位内存,因此double
类型的精度更高。 - float: 32bit [1.40E-45F, 3.4028235E38F] 默认:0.0F
- double: 64bit [4.9E-324, 1.7976931348623157E] 默认:0.0
- 字符型(characters): 字符型数据用于表示单个字符,它们在内存中以Unicode字符集编码。Java中的字符类型是
char
,占用16位内存,默认:'\u0000'。 - 布尔型(boolean): 布尔型数据用于表示真假值,只有两个取值:
true
和false
,默认:false。
引用数据类型
Java的引用数据类型包括类、接口、数组等。这些数据类型不直接存储数据,而是存储对数据的引用。
位运算
位运算是对数据在二进制位级别进行操作的一种运算。Java提供了丰富的位运算操作符,包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)以及左移(<<)、右移(>>)、无符号右移(>>>)等。
按位与(&)
按位与运算符将两个操作数的对应位进行逻辑与运算,只有当两个对应位都为1时,结果位才为1。例如:
int a = 5; // 二进制表示为 101
int b = 3; // 二进制表示为 011
int result = a & b; // 结果为 1
按位或(|)
按位或运算符将两个操作数的对应位进行逻辑或运算,只要两个对应位中有一个为1,结果位就为1。例如:
int a = 5; // 二进制表示为 101
int b = 3; // 二进制表示为 011
int result = a | b; // 结果为 7
按位异或(^)
按位异或运算符将两个操作数的对应位进行逻辑异或运算,当两个对应位不相同时,结果位为1。例如:
int a = 5; // 二进制表示为 101
int b = 3; // 二进制表示为 011
int result = a ^ b; // 结果为 6
按位取反(~)
按位取反运算符对操作数的每一位进行取反操作,即0变为1,1变为0。例如:
int a = 5; // 二进制表示为 101
int result = ~a; // 结果为 -6
左移(<<)
左移运算符将操作数的所有位向左移动指定的位数,低位补0。例如:
int a = 5; // 二进制表示为 101
int result = a << 1; // 结果为 10,即十进制的2
右移(>>)
右移运算符将操作数的所有位向右移动指定的位数,高位补符号位。例如:
int a = 5; // 二进制表示为 101
int result = a >> 1; // 结果为 2
无符号右移(>>>)
无符号右移运算符将操作数的所有位向右移动指定的位数,高位补0。例如:
int a = -5; // 二进制表示为 11111111111111111111111111111011
int result = a >>> 1; // 结果为 2147483645