后端-第三周作业考核
1、生成10个1到20(范围:[1,20])之间的不重复的随机数
public class CaoGao {
public static void main(String[] args) {
List<Integer> randList = new ArrayList<>();
Random rand = new Random();
int tmp = 0;
randList.add(rand.nextInt(20) + 1);
for (int i = 2; i <=10 ; ) {
tmp = rand.nextInt(20) + 1;
if (!randList.contains(tmp)){
i++;
randList.add(tmp);
}
}
System.out.println(randList);
}
}
2、楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,也可以一步上3阶,编一程序计算共有多少种不同的走法。
输入楼梯的台阶数,输出有多少种走法。(递归)(作为思考题)
输入样例:
在这里给出一组输入。例如:
8
输出样例:
在这里给出相应的输出。例如:
81
public class CaoGao {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
System.out.println(new CaoGao().upStairs(n));
}
public int upStairs(int n ){
if (n == 1){
return 1;
}else if(n == 2){
return 2;
}else if (n == 3){
return 4;
}else {
return upStairs(n-1)+upStairs(n-2)+upStairs(n-3);
}
}
}
3、让我们用字母 B
来表示“百”、字母 S
表示“十”,用 12...n
来表示不为零的个位数字 n
(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234
应该被输出为 BBSSS1234
,因为它有 2 个“百”、3 个“十”、以及个位的 4。
输入格式:
每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。
输出格式:
每个测试用例的输出占一行,用规定的格式输出 n。
输入样例 1:
234
输出样例 1:
BBSSS1234
输入样例 2:
23
输出样例 2:
SS123
public class CaoGao {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//取余后的整数
int tmp = scan.nextInt();
int ge = tmp % 10;
int shi = tmp % 100 / 10;
int bai = tmp / 100;
StringBuilder s = new StringBuilder();
for (int i = 0; i < bai; i++) {
s.append("B");
}
for (int i = 0; i < shi; i++) {
s.append("S");
}
for (int i = 0; i < ge; i++) {
s.append(i + 1);
}
System.out.println(s);
}
}
4.为什么重写equals时候被要求重写hashCode()?
我们重写equals时,是为了用自身的方式去判断两个自定义对象是否相等,然而如果此时刚好需要我们用自定义的对象去充当hashmap的健值使用时,就会出现我们认为的同一对象,却因为hash值不同而导致hashmap中存了两个对象,从而才需要进行hashcode方法的覆盖
5.简要谈谈JDK,JVM,JRE三者的区别
jdk:
JDK(Java Development Kit) 是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar).
bin:最主要的是编译器(javac.exe)
include:java和JVM交互用的头文件
lib:类库
jre:java运行环境
jre:
JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及Java核心类库。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器)
JRE是指java运行环境。光有JVM还不能成class的 执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。 (jre里有运行.class的java.exe)
JRE ( Java Runtime Environment ),是运行 Java 程序必不可少的(除非用其他一些编译环境编译成.exe可执行文件……),JRE的 地位就象一台PC机一样,我们写好的Win64应用程序需要操作系统帮 我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。
jvm:
JVM(Java Virtual Machine),即java虚拟机, java运行时的环境,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。针对java用户,也就是拥有可运行的.class文件包(jar或者war)的用户。里面主要包含了jvm和java运行时基本类库(rt.jar)。rt.jar可以简单粗暴地理解为:它就是java源码编译成的jar包。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。