赞
踩
scanner.next() 从缓冲区接收字符遇到空格后停止。 相当于 cin 和 scanf
scanner.nextLine() 从缓冲区接收字符,并且接收空格,遇到换行才停止,并且会自动舍弃换行。 相当于 gets()scanner.hasNext() 判断缓存区中还有没有数据,有返回true, 否则等待输入。
scanner.hasNextInt() 判断输入的是不是int型的数据,是的话返回true 否则继续扫描缓冲区,或者等待输入。
scanner.hasNextDouble() 判断输入的是不是double型的数据,是的话返回true 否则继续扫描缓冲区,或者等待输入。
Scanner scanner = new Scanner(System.in); // 正常输入 Scanner scanner = new Scanner(new File("src/XX"));// 指定文件输入 int a = 5; System.out.println(a); // 正常输出到控制台 System.setOut(new PrintStream(new File("src/XX"))); // 设置输出到指定文件,当字符串特别长时只能用这种方法 System.out.println(a); // 会输出到指定文件 int sum = 0; while (scanner.hasNext()) { //直到输入-1才停止 int a = scanner.nextInt(); if (a == -1) break; sum += a; } System.out.println(sum); System.out.printf(); //和C/C++中的printf一样。 可使用格式控制符进行格式化输出。 System.out.print() //不能使用格式控制符进行格式化输出,仅输出变量 System.out.println() //不能使用格式控制符进行格式化输出,仅输出变量,但会自动输出一个换行。
Arrays.fill(int[] arr, int x); //将arr内的每个元素赋值为x
System.arraycopy(Object a, int begin_a, Object b, int begin_b, int length); //从a复制到b,复制从a数组指定的位置begin_a开始,到begin_a+length-1结束。放置从b的begin_b开始,到begin_b+length-1结束。
Arrays.copyOf(int[] a, int length); //从a数组的第一个元素开始复制,复制length个元素。
Arrays.copyOfRange(int[] a, int begin, int to); //从a数组begin开始复制,到to-1位置结束。
String s1 = "abcdef";
char[] s2 = s1.toCharArray();
for(int i = 0; i < s2.length; i++){ //遍历字符串,需要先将其转化为字符数组
System.out.println(s2[i]);
}
这里只举例常用的Java类,不用去记每种用法,太多也记不住,主语要直到怎么用就可以,具体用法到时候也可以具体参考文档
BigInteger 和 BigDecimal 大整数与大浮点数
Math类:四舍五入用 Math.round(double x);
在java中String类不可变的,创建一个String对象后不能更改它的值。所以如果需要对原字符串进行一些改动操作,就需要用StringBuilder类或者StringBuffer类,StringBuilder比StringBuffer更快一些,缺点是StringBuilder不是线程安全的,但在算法竞赛中一般我们用不到多线程。所以,主要推荐使用StringBuilder类。
Calendar 类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
Calendar c = Calendar.getInstance(); //生成一个新的Calendar类
c.set(2022, 4, 6, 10, 10, 10); //set(int year, int month, int date, int hourOfDay, int minute, int second)
c.set(Calendar.YEAR, 2022); //set(int field, int value) 将给定的日历字段设置为给定的值
c.set(Calendar.MONTH, 4);
c.set(Calendar.DAY_OF_MONTH, 5);
System.out.println(c.get(Calendar.YEAR)); //输出当前年
System.out.println(c.get(Calendar.MONTH)); //输出当前月
System.out.println(c.get(Calendar.DATE)); //输出当前日
System.out.println(c.get(Calendar.DAY_OF_WEEK)); //输出当前的星期
System.out.println(c.get(Calendar.HOUR_OF_DAY)); //输出当前小时
System.out.println(c.get(Calendar.MINUTE)); //输出当前分钟
System.out.println(c.get(Calendar.SECOND)); //输出当前秒数
System.out.println(c.getTimeInMillis()); //输出当前时间戳
System.out.println(c.getTime()); //输出的是一个Date对象,表示当前的日期
System.err.println(c.get(Calendar.DAY_OF_WEEK));
ArrayList 类可以实现可增长的对象数组。
ArrayList()
;//构造一个空向量,使其内部数据数组的大小为 10,其标准容量增量为零。
ArrayList(int initialCapacity)
;//使用指定的初始容量和容量增量构造一个空的向量。
LinkedList是List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。
Stack<Integer> Stack = new Stack<>(); //第一种栈的实现方式
LinkedList<Integer> Stack = new LinkedList<>(); // LinkedList没有实现Stack接口,但是我们只需要用其中的关于栈的方法。
Queue<Integer> Queue = new LinkedList<>();//LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。
Map是一种key-value键值对存储的容器结构
HashMap是基于哈希表的 Map 接口的实现,是无序的
TreeMap是基于红黑树实现的,是有序的, 可进行排序。此实现为 containsKey、get、put 和 remove 操作提供受保证的 log(n) 时间开销
set容器的特点是不包含重复元素,也就是说自动去重。
HashSet基于哈希表实现,无序。
TreeSet基于红黑树实现。有序。
因为TreeSet和TreeMap是基于红黑树实现,所以可以二分查找一个比当前元素大的最小元素,或者比当前元素小的最大元素。
ceiling(E e)//返回一个大于等于当前元素的最小元素,不存在返回null
floor(E e)//返回一个小于等于当前元素的最大元素,不存在返回null
higher(E e)//返回此 set 中严格大于给定元素的最小元素,不存在返回null
lower(E e)//返回此set中严格小于给定元素的最大元素,不存在返回null
first()//返回第一个元素
last()//返回最后一个元素
优先队列,本质是一个堆, 默认情况下堆顶每次都保留最小值(小根堆),每插入一个元素,仍动态维护堆顶为最小值。
PriorityQueue<Integer> container = new PriorityQueue<>(new Comparator<Integer>() { //大根堆构造
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1; // 按照降序排序
}
});
在做一些算法题时常常会需要对数组、自定义对象、集合进行排序. 在java中对数组排序提供了Arrays.sort()方法,对集合排序提供Collections.sort()方法。对自定义对象排序时要自己重写比较器,对象数组则调用Arrays.sort(),对象集合则调用Collections.sort()。两个方法默认都是升序,也可以重写比较器,实现降序。
TreeSet<Integer> s = new TreeSet<>(new Comparator<Integer>(){ //自定义TreeSet排序规则
public int compare(Integer a, Integer b) {
return b - a;
}
});
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。