先通过GBK编码还原字符串,在该字符串正确的基础上得到“UTF-8”所对应的字节串。
1.finally代码块的语句在return之前一定会得到执行
2.如果try块中有return语句,finally代码块没有return语句,那么try块中的return语句在返回之前会先将要返回的值保存,之后执行finally代码块,最后将保存的返回值返回,finally代码块虽然对返回值进行修改也不影响返回值,因为要返回的值在执行finally代码块之前已经保存了,最终返回的是保存的旧值。
3.如果try块和finally块都有返回语句,那么虽然try块中返回值在执行finally代码块之前被保存了,但是最终执行的是finally代码块的return语句,try块中的return语句不再执行。
4.catch块和try块类似,会在执行finally代码块执行前保存返回值的结果,finally语句中有return语句则执行finally的return语句,没有则执行catch块中的return语句,返回之前的保存值。
A、Semaphore:类,控制某个资源可被同时访问的个数;
B、ReentrantLock:类,具有与使用synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大;
C、 Future:接口,表示异步计算的结果;
D、 CountDownLatch: 类,可以用来在一个线程中等待多个线程完成任务的类
import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;
public class Main2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {// 注意,如果输入是多个测试用例,请通过while循环处理多个测试用例
String[] strs = in.nextLine().split(" ");
int[] a = new int[strs.length];
for (int i = 0; i < a.length; i++) {
a[i] = Integer.valueOf(strs[i]);
}
Map<Integer,Integer> map = new HashMap<>();
for(int x:a) {
Integer count = map.get(x);
if(count == null) {
map.put(x,1);
}else {
map.put(x,count+1);
}
}
for(Map.Entry<Integer,Integer> entry:map.entrySet()) {
if(entry.getValue()>=a.length/2) {
System.out.println(entry.getKey());
}
}
}
}
}
每次遇到这种随即让你输入n个数字进行一系列判断操作,用数组必须指定数组的大小,不符合输入的格式,这时我们可以用下面这种方法:
定义输入一个字符串数组,并用空格分开满足输入格式要求。最后再转换为整型存放在int型数组里,最后再用Map进行存放,key是数组中的每个数,value是每个数出现的次数,最后遍历Map根据key找出value大于长度一半的key。
这个遍历也需要记一下。