【强训】Day12

努力经营当下,直至未来明朗!


普通小孩也要热爱生活!

一、选择

  1. 在Java中,关于HashMap类的描述,以下错误的是()

A HashMap使用键/值得形式保存数据
B HashMap 能够保证其中元素的顺序
C HashMap允许将null用作键
D HashMap允许将null用作值

  1. 在Java中,( )类提供定位本地文件系统,对文件或目录及其属性进行基本操作。

A FileInputStream
B FileReader
C FileWriter
D File

  1. Java1.8之后,Java接口的修饰符可以为()

A private
B protected
C final
D abstract

  1. ☆下列程序的运行结果()
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!

  1. 下列哪种异常是检查型异常,需要在编写程序时声明?

A NullPointerException
B ClassCastException
C FileNotFoundException
D IndexOutOfBoundsException

  1. 选项中哪一行代码可以添加 到题目中而不产生编译错误?
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() {}

  1. ☆如下代码,执行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. 选择

  1. ① TreeMap是根据key来进行排序的,其参数key不能为null,但是value是可以为null的
    ② HashMap不排序,所以key、value都可以是null
    ③ set是指存储key,所以不能重复,并且不能修改,只能删除后重新添加。
    参考Map和Set

故:选B

  1. ① File有很多方法,可以对文件或目录及其属性进行操作
    ② 字节流适用于二进制文件,父类有InputStream、OutputStream(均是抽象类,不能进行实例化)
    ③ 字符流适用于文本文件,父类有Reader、Writer
    ④ 进行文件操作,必须要close!
    参考文件操作与IO

故:选D

  1. ① 接口的方法修饰符默认是public abstract
    ② 接口中可以有变量,其修饰符默认是public static final,必须赋初值,且后续不能改变!
    ③ final修饰表示不可以继承、不可以修改。
    ④ 补充:接口中是可以有非抽象方法的,要使用default修饰,且在继承其的子类中不用重写,可以直接调用
    1
    参考:抽象类和接口

故:选D

  1. 考察多个catch语句块的执行顺序。

① 当用多个catch语句时,catch语句块在次序上有先后之分。从最前面的catch语句块依次先后进行异常类型匹配,这样如果父异常在子异常类之前,那么首先匹配的将是父异常类,子异常类将不会获得匹配的机会,也即子异常类型所在的catch语句块将是不可到达的语句。所以,一般将父类异常类即Exception老大放在catch语句块的最后一个
也就是说只会有一个catch匹配成功,一旦成功,后续的catch语句块将不会执行

故:选A

  1. ① 受查异常/编译时异常:一定要进行声明,如IOException、ClassNotFoundException、CloneNotSupportedException等。
    ② 运行时异常/非受查异常:RunTimeException以及其子类对应的异常,都称为运行时异常。比如:NullPointerException、ArrayIndexOutOfBoundsException、ArithmeticException等。
    参考认识异常

故:选C

  1. 抽象类中既可以包含抽象方法,也可以不包含,并且方法可以重载
    A中method抽象方法与已给method方法同名不同参且与返回值类型无关,所以是方法重载,是合理的。
    类中不能进行运算,只能定义方法和变量。所以:在了类中进行constInt = constInt + 5;运算就是错误的。
    方法重载是同名不同参且与返回值类型无关。
    抽象方法没有方法体

故:选A

  1. ① byte是1字节,也就是8bit,其是有符号的,最高位是符号位(1负0正)。其范围是:10000000~01111111,即:-128 ~127
    ② 二进制存储计算都是以补码的形式,最后要转为原码计算十进制数值
    ③ 补码=反码+1
    ④ 一定要注意的就是函数对原来的结果是否有影响的问题!
    2

故:选D
结果应该为:-128 127


2. 编程

  1. 二进制插入

1)思路:

① 考察位运算,拿到二进制的每一位需要使用移位运算符
把m先左移j位,然后与n进行按位或运算就行
③ 注意:第k位是从右边开始数的,从0开始的!
④ 示例:
5

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)思路:

① 本题首先要进行判断素数:只能被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--;
            }
        }
    }
}

111

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

'Dream是普通小孩耶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值