位运算
判断奇偶数 x&1=1 奇数 0 偶数 异或 A^A=0 B^0=B
!取反
用一条语句判断一个整数是不是二的整数次方
if(((n-1)&n)==0) {}是
检查一个整数的某一位是否为一
Scanner scanner=new Scanner(System.in); int N = scanner.nextInt(); scanner.nextLine(); int count=0; //计数 一共有多少个1 // 使用按位与操作检查N的第i位是否为1 // 注意:这里不需要显式地将结果转换为boolean,因为Java会自动进行隐式转换 for (int i = 0; i < N; i++) { if ((N & (1 << i)) != 0){ // !=转换数据类型 System.out.println("N的第" + i + "位是1"); count++; } else { System.out.println("N的第" + i + "位不是1"); } } System.out.println(count); }}
Set
在Java中,Set
是一个不包含重复元素的集合接口。HashSet
是 Set
接口的一个实现,它使用哈希表(HashMap)来存储元素,因此提供了快速的插入和查找操作。
当你写 Set<Integer> set = new HashSet<>();
时,你正在创建一个新的 HashSet
对象,并将它引用赋值给 set
变量。这个 HashSet
对象将用于存储 Integer
类型的对象(即整数)。
以下是一些关于 HashSet
的基本用法:
public class HashSetExample { public static void main(String[] args) {
// 创建一个空的HashSet,用于存储Integer类型的对象
Set<Integer> set = new HashSet<>(); // 向HashSet中添加元素
set.add(1);
set.add(2);
set.add(3);
set.add(3); // 重复添加,但HashSet不会存储重复元素
// 遍历HashSet中的元素 for (Integer number : set) { System.out.println(number); }
// 检查元素是否存在 if (set.contains(2)) { System.out.println("2存在于HashSet中"); }
// 移除元素 set.remove(1);
// 检查元素是否已被移除 if (!set.contains(1)) { System.out.println("1已从HashSet中移除"); }
// 输出HashSet的大小(即元素的数量) System.out.println("HashSet的大小是: " + set.size()); } }