>> << >>> <<<有什么区别?
时间: 2023-08-17 18:03:40 浏览: 90
在 Java 中,`>>`、`<<`、`>>>`、`<<<` 都是位运算符,用于对二进制数进行操作。它们的具体区别如下:
1. `<<` 左移运算符:将一个整数的二进制表示向左移动指定的位数,右边用 0 填充空缺的位。例如,`2 << 2` 的结果是 8,因为将 2 的二进制表示 10 向左移动 2 位,变成 1000,对应的十进制数是 8。
2. `>>` 右移运算符:将一个整数的二进制表示向右移动指定的位数,左边用原来的符号位填充空缺的位。例如,`-8 >> 2` 的结果是 -2,因为将 -8 的二进制表示 11111000 向右移动 2 位,变成 11111110,对应的十进制数是 -2。
3. `>>>` 无符号右移运算符:将一个整数的二进制表示向右移动指定的位数,左边用 0 填充空缺的位。注意,这种运算不考虑符号位,所以对于正数和负数的结果是不同的。例如,`-8 >>> 2` 的结果是 1073741822,因为将 -8 的二进制表示 11111111111111111111111111111000 向右移动 2 位,变成 00111111111111111111111111111110,对应的十进制数是 1073741822。
4. `<<<` 在 Java 中不存在这个运算符。
综上所述,`<<` 和 `>>` 是有符号的位运算符,`>>>` 是无符号的位运算符。
相关问题
Class<?>和Class的区别
Class<?>和Class都是Java中的Class类,但是它们之间有一些区别。
Class<?>是一个通配符泛型,表示可以是任意的Java类。它可以用来描述一个未知的类型,并且可以在运行时获取这个类型的信息。
而Class则是Java中用于描述一个类的类,每个Java类都有一个对应的Class对象,可以通过这个对象获取该类的信息,比如它的名称、方法、字段等等。
因此,Class<?>是一个泛型,它表示任意类型的Class对象;而Class则是用于描述一个具体的Java类的类型。
List<T> 和 List<?>有什么区别
List<T>是一个泛型类,它表示可以存储任何类型为T的元素的列表。T是列表元素的类型参数,可以在使用时指定。例如,List<Integer>表示只能存储整数类型的列表。
List<?>是一个通配符类型,它表示可以存储任何类型的元素的列表,但是你不知道这个列表的实际元素类型是什么。这意味着你可以读取这个列表中的元素,但是你不能向这个列表中添加元素,因为你不知道这个元素类型是什么。例如,List<?>可能是List<Integer>、List<String>或List<Object>的实例,但是你不能确定它的实际类型。
因此,List<T>和List<?>之间的区别在于是否知道列表的元素类型。如果你需要在运行时知道列表的元素类型并向其中添加元素,则应该使用List<T>。如果你只需要读取列表中的元素,或者你不知道列表的实际元素类型是什么,那么应该使用List<?>。