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());
}