【Java笔试强训 12】
🎉🎉🎉点进来你就是我的人了
博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!欢迎志同道合的朋友一起加油喔🤺🤺🤺
目录
一、选择题
二、编程题
🔥二进制插入
🔥查找组成一个偶数最接近的两个素数
一、选择题
1、以下方法,哪个不是对add方法的重载?
public class Test
{
public void add( int x,int y,int z){}
}
A public int add(int x,int y,float z){return 0;}
B public int add(int x,int y,int z){return 0;}
C public void add(int x,int y){}
D 以上都不是
正确答案:B
2、在Java中,关于HashMap类的描述,以下错误的是
A HashMap使用键/值得形式保存数据
B HashMap 能够保证其中元素的顺序
C HashMap允许将null用作键
D HashMap允许将null用作值
正确答案: B
3、在Java中,( )类提供定位本地文件系统,对文件或目录及其属性进行基本操作
A FileInputStream
B FileReader
C FileWriter
D File
正确答案: D
4、下面程序的运行结果是
String str1 = "hello";
String str2 = "he" + new String("llo");
System.err.println(str1 == str2);
A true
B false
C exception
D 无输出
正确答案: B
5、下列哪个修饰符可以使在一个类中定义的成员变量只能被同一包中的类访问?
A private
B 无修饰符
C public
D protected
正确答案: B
6、java接口的方法修饰符可以为?(忽略内部接口)
A private
B protected
C final
D abstract
正确答案: D
参考答案:
接口中的方法是需要被这个接口的类实现的。
7、下列程序的运行结果
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!
DFileNotFoundException!IOException!Exception!
正确答案: A
参考答案:
只能捕捉一个异常,所以选一个。
8、下列哪种异常是检查型异常,需要在编写程序时声明?
A NullPointerException
B ClassCastException
C FileNotFoundException
D IndexOutOfBoundsException
正确答案: C
参考答案:
异常可以分为非检查异常和检查异常:
非检查异常主要包括运行时异常(RuntimeException极其子类)和错误(Error)。编译器不会进行检查并且不要求必须处理的异常,也就说当程序中出现此类
异常时,即使我们没有try-catch捕获它,也没有使用throws抛出该异常,编译也会正常通过。
检查异常是除了Error和 RuntimeException的其它异常。这是编译器要求必须处理的异常。这样的异常一般是由程序的运行环境导致的。因为程序可能被运行
在各种未知的环境下,而程序员无法干预用户如何使用他编写的程序,所以必须处理这些异常。
9、选项中哪一行代码可以添加 到题目中而不产生编译错误?
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() {}
正确答案: A
参考答案:
里面缺一个抽象方法,A是抽象方法,D是抽象方法但是有方法体。
10、如下代码,执行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 其他选项都不对
正确答案: D
参考答案:
包装类的值是final修饰不可变的,无论是++b还是b++都创建了一个新对象,那么作为参数传递时,形参和实参不会指向一个地址。也就是说,即使add() 方法中不是 b = b++;这样没有意义的代码,传入参数的值也不会改变。
byte类型取值范围为-128~127,在a变量进行++a运算时,会导致a变为-128,这是因为整数在内存中使用的是补码的形式表示,最高位是符号位,0表示正数,1表示负数,加一导致补码进位,符号位变为1. 因此,本题正确输出为-128 127,答案选择D
二、编程题
🔥二进制插入
二进制插入_牛客题霸_牛客网
【解题思路】:
i j
n:1024:100000000 00 m:19 : 10011 要把n的二进制值插入m的第j位到第i位,只需要把n先左移j位,然后再进行或运算(|)即可。
n: 10000000000
m: 00001001100
10001001100
import java.util.*;
public class BinInsert {
public int binInsert(int n, int m, int j, int i) {
m<<=j;
return m|n;
}
}
🔥查找组成一个偶数最接近的两个素数
查找组成一个偶数最接近的两个素数_牛客题霸_牛客网
【解题思路】:
本题首先需要判断素数,素数表示除过1和本身,不能被其它数整除。通过循环遍历来判断一个数是否为素数。最近的两个素数应该从最中间的位置开始向两边查找。
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNextInt()){
int n=sc.nextInt();
int mid=n/2;
for(int i=mid;i>0;i--){
if(isPrime(i)&&isPrime(n-i)){
System.out.println(i);
System.out.println(n-i);
break;
}
}
}
}
public static boolean isPrime(int m){
for(int i=2;i*i<=m;i++){
if(m%i==0){
return false;
}
}
return true;
}
}