努力经营当下,直至未来明朗!
普通小孩也要热爱生活!
一、选择
- 在Java中,关于HashMap类的描述,以下错误的是()
A HashMap使用键/值得形式保存数据
B HashMap 能够保证其中元素的顺序
C HashMap允许将null用作键
D HashMap允许将null用作值
- 在Java中,( )类提供定位本地文件系统,对文件或目录及其属性进行基本操作。
A FileInputStream
B FileReader
C FileWriter
D File
- Java1.8之后,Java接口的修饰符可以为()
A private
B protected
C final
D abstract
- ☆下列程序的运行结果()
public void getCustomerInfo() {
try {
// do something that may cause an Exception
} catch (java.io.FileNotFoundException ex) {
System.out.print("FileNotFoundException!");
} catch (java.io.IOException ex) {
System.out.print("IOException!");
} catch (java.lang.Exception ex) {
System.out.print("Exception!");
}
}
A IOException!
B IOException!Exception!
C FileNotFoundException!IOException!
D FileNotFoundException!IOException!Exception!
- 下列哪种异常是检查型异常,需要在编写程序时声明?
A NullPointerException
B ClassCastException
C FileNotFoundException
D IndexOutOfBoundsException
- 选项中哪一行代码可以添加 到题目中而不产生编译错误?
public abstract class MyClass {
public int constInt = 5;
//add code here
public void method() {
}
}
A public abstract void method(int a);
B constInt = constInt + 5;
C public int method();
D public abstract void anotherMethod() {}
- ☆如下代码,执行test()函数后,屏幕打印结果为()
public class Test2 {
public void add(Byte b)
{
b = b++;
}
public void test()
{
Byte a = 127;
Byte b = 127;
add(++a);
System.out.print(a + " ");
add(b);
System.out.print(b + "");
}
}
A 127 127
B 128 127
C 129 128
D 其他选项都不对
二、编程
1. 二进制插入
给定两个32位整数n和m,同时给定i和j,将m的二进制数位插入到n的二进制的第j到第i位,保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1,其中二进制的位数从0开始由低到高。
2. 查找组成一个偶数最接近的两个素数
任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。
数据范围:输入的数据满足 4≤n≤1000
答案
1. 选择
- ① TreeMap是根据key来进行排序的,其参数key不能为null,但是value是可以为null的
② HashMap不排序,所以key、value都可以是null
③ set是指存储key,所以不能重复,并且不能修改,只能删除后重新添加。
参考:Map和Set
故:选B
- ① File有很多方法,可以对文件或目录及其属性进行操作
② 字节流适用于二进制文件,父类有InputStream、OutputStream(均是抽象类,不能进行实例化)
③ 字符流适用于文本文件,父类有Reader、Writer
④ 进行文件操作,必须要close!
参考:文件操作与IO
故:选D
- ① 接口的方法修饰符默认是public abstract
② 接口中可以有变量,其修饰符默认是public static final,必须赋初值,且后续不能改变!
③ final修饰表示不可以继承、不可以修改。
④ 补充:接口中是可以有非抽象方法的,要使用default修饰,且在继承其的子类中不用重写,可以直接调用
参考:抽象类和接口
故:选D
- 考察多个catch语句块的执行顺序。
① 当用多个catch语句时,catch语句块在次序上有先后之分。从最前面的catch语句块依次先后进行异常类型匹配,这样如果父异常在子异常类之前,那么首先匹配的将是父异常类,子异常类将不会获得匹配的机会,也即子异常类型所在的catch语句块将是不可到达的语句。所以,一般将父类异常类即Exception老大放在catch语句块的最后一个。
② 也就是说只会有一个catch匹配成功,一旦成功,后续的catch语句块将不会执行。
故:选A
- ① 受查异常/编译时异常:一定要进行声明,如IOException、ClassNotFoundException、CloneNotSupportedException等。
② 运行时异常/非受查异常:RunTimeException以及其子类对应的异常,都称为运行时异常。比如:NullPointerException、ArrayIndexOutOfBoundsException、ArithmeticException等。
③ 参考:认识异常
故:选C
- ① 抽象类中既可以包含抽象方法,也可以不包含,并且方法可以重载。
A中method抽象方法与已给method方法同名不同参且与返回值类型无关,所以是方法重载,是合理的。
② 类中不能进行运算,只能定义方法和变量。所以:在了类中进行constInt = constInt + 5;运算就是错误的。
③ 方法重载是同名不同参且与返回值类型无关。
④ 抽象方法没有方法体。
故:选A
- ① byte是1字节,也就是8bit,其是有符号的,最高位是符号位(1负0正)。其范围是:10000000~01111111,即:-128 ~127
② 二进制存储计算都是以补码的形式,最后要转为原码计算十进制数值
③ 补码=反码+1
④ 一定要注意的就是函数对原来的结果是否有影响的问题!
故:选D
结果应该为:-128 127
2. 编程
- 二进制插入
1)思路:
① 考察位运算,拿到二进制的每一位需要使用移位运算符。
② 把m先左移j位,然后与n进行按位或运算就行。
③ 注意:第k位是从右边开始数的,从0开始的!
④ 示例:
2)代码:
import java.util.*;
public class BinInsert {
public int binInsert(int n, int m, int j, int i) {
// write code here
m <<= j;
return m|n;
}
}
- 查找组成一个偶数最接近的两个素数
1)思路:
① 本题首先要进行判断素数:只能被1和本身整除
② 循环遍历找可以组成该偶数的素数
③ 注意:最接近的两个素数应该从中间开始向两边寻找。
④ 此处的组成偶数的两个数是相加的形式!
2)代码:
// 寻找组成一个偶数的最接近的两个素数
// 是相加的形式,要判断素数,从中间开始向两边寻找
import java.util.Scanner;
public class Main {
// 判断是否为素数:只有1和本身
private static boolean isPrime(int n) {
for (int i = 2; i < n; i++) {
if(n % i == 0) {
return false;
}
}
return true;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int n = in.nextInt();
// 从中间开始进行判断比较
int half = n / 2;
while (half > 1) { // 1不是素数
// 判断是否为素数
if(isPrime(half) && isPrime(n-half)) {
System.out.println(half);
System.out.println(n-half);
break;
}
half--;
}
}
}
}