java每日一练(4)

java每日一练(4)

单选部分


1.下列与队列结构有关联的是()

A 函数的递归调用

B 数组元素的引用

C 多重循环的执行

D 先到先服务的作业调度


队列的特点 : 先进先出 , 所以 答案非常明显 D

2.类所实现接口的修饰符不能为()

A void

B public

C abstract

D final


答案 : 这里我们的类被 final 修饰 是不能够继承的 , 而我们的接口本来就是用来被实现,然后重写里面的方法的,此时如果修饰了就不能进行重写了 ,所以

这里不能使用 final 修饰我们的接口


3.下列叙述正确的是( )。

A 算法就是程序

B 设计算法时只需要考虑数据结构的设计

C 设计算法时只需要考虑结果的可靠性

D 以上三种说法都不对


答案 : D  很明显 A B C 都是错误的 .


4.下面关于abstract关键字描述错误的是()


A abstract关键字可以修饰类或方法

B final类中的方法都不能是abstract,因为final类不能有子类

C abstract类不能实例化

D abstract类的子类必须实现其超类的所有abstract方法


答案: A :正确

在这里插入图片描述


B:被 final 修饰的类是不能够继承的, 而 被 abstract 修饰的方法是必须需要重写的,所以这里就出现了矛盾 , 正因为不能继承,所以没有子类,没有子类,就不能够进行重写 所以 B正确

C: 正确抽象类是不能狗实例化的,接口也是

D:错误 , 当抽象类A的子类B同样是抽象方法的时候,就可以不重写抽象方法,但是如果在有一个普通的类继承了B 就需要重写 A的抽象方法,和B 的抽象方法、

在这里插入图片描述


5.结构化程序的三种基本结构是( )

A 递归、迭代和回溯

B 过程、函数和子程序

C 顺序、选择和循环

D 调用、返回和选择


答案 :C

结构化程序设计 (structured programming)是进行以模块功能和处理过程设计为主的详细设计的基本原则 (面向过程)。结构化程序设计是过程式程序设计的一个子集,它对写入的程序使用逻辑结构,使得理解和修改更有效更容易。


6.对于abstract声明的类,下面说法正确的是

A 可以实例化

B 不可以被继承

C 子类为abstract

D 只能被继承

E 可以被抽象类继承


答案 :

A : 错误被abstract声明的类是抽象类,是不可以被实例化的

B : 抽象类大部分情况下都是需要继承的 ,但不一定非要继承.

C : 子类可以是 被 abstract ,此时这个子类就可以不重写父类的抽象方法

D : 此时我们的 抽象类 B 就被组合了

在这里插入图片描述

E : 正确

7.1GB 的准确值是( )

A 1024×1024 Bytes

B 1024 KB

C 1024 MB

D 1000×1000 KB


bit -> byte -> kb -> mb -> gb -> tb -> pb

1byte == 8bit

1kb = 1024 byte

1mb = 1024 kb

1gb = 1024 mb

所以答案 是 C

不定项选择题


1.下面选项中,哪些是interface中合法方法定义?()


A public void main(String [] args);

B private int getSum();

C boolean setFlag(Boolean [] test);

D public float get(int x);


图一 :

在这里插入图片描述


图二 :

在这里插入图片描述


所以 答案为 : A C D ,

B : 接口中所有的方法 默认都是被public 修饰的,这里 private就会出现编译错误 , 另外被private 修饰的方法是不能够重写的.

我们接口实现方法(默认是抽象方法)本来就是用来重写的 .

抽象方法 默认 是 public abstract .


2.下面哪些类实现或继承了 Collection 接口?

A HashMap

B ArrayList

C Vector

D Iterator


观察下图我们就能知道 谁实现了我们的 Collection接口 . 所以答案 为 B C

在这里插入图片描述

多选题


1.对于jdk1.8,以下为 java 语法保留不能作为类名和方法名使用的是


A default

B int

C implements

D throws


上面都属于我们java的关键字,所以都不能作为我们的类名和方法名定义.

所以答案 :ABCD

编程题

题目一 :计算糖果_牛客题霸_牛客网 (nowcoder.com)

在这里插入图片描述

这道题目非常简单, 我们只需要她给的 A - B , 和 B - C 和 A + B , 和 B + C 计算即可 ,

A = (A - B + A + B ) / 2 , B = (B - C + B + C) / 2

下面直接来看代码 :

import java.util.Scanner;



public class Main {
    
    
    public static void main(String[] args) {
    
    
        Scanner sc = new Scanner(System.in);
        // a = A - B
        int a = sc.nextInt();
        // b = B - C
        int b = sc.nextInt();
        // c = A + B
        int c = sc.nextInt();
        // d = B + C
        int d = sc.nextInt();

        int A = (a + c) / 2;
        int B = (b + d) / 2;

        int C = d - B;

//        验证一下 我们的A , B 是否能还原 
        if (2 * A + 2 * B != a + b + c + d ) {
    
    
            System.out.println("No");
        } else {
    
    
            // 防止出现算出来有负数的情况 
            if(A < 0 || B < 0 || C < 0){
    
    
                System.out.println("No");
            }else {
    
    
                System.out.print(A + " " + B + " " + C + " ");
            }

        }

    }
}

题目二 : [进制转换_牛客题霸_牛客网 (nowcoder.com)](https://www.cctalk.com/v/16466262153331?sid=1646298415770519&xh_fshareuid=124017910)


图一 :

在这里插入图片描述


代码 :

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    
    
    Scanner sc = new Scanner(System.in);
    //  中共 16 进制 使用一个字符串保留 进制数
    String str = "0123456789ABCDEF";

    // 构造数据
    int m = sc.nextInt();
    int n = sc.nextInt();
    if (m == 0) {
    
    
        System.out.println("0");
        return;
    }
    // 此时判断 m 是否为整数
    boolean flag = false;
    if (m < 0) {
    
    
        flag = true;
        // 将m 改成正数后面好操作
        m = -m;
    }
    // 使用 StringBuilder 好拼接我们的字符串
    StringBuilder ret = new StringBuilder();
    while (m != 0) {
    
    
        ret.append(str.charAt(m % n));
        m /= n;
    }
    if (flag) {
    
    
        ret.append("-");
    }
    // 逆置我们的字符串
    ret.reverse();
    System.out.println(ret.toString());
}

猜你喜欢

转载自blog.csdn.net/mu_tong_/article/details/128070797