48天笔试训练错题——day25

本文介绍了Java编程中的线程概念、JVM工作原理,以及两个编程题目——星际密码的哈希表实现和数根问题的递归算法。涉及线程启动、类与接口特性及运行时翻译等内容。
摘要由CSDN通过智能技术生成

目录

选择题

1.

2.

3.

4.

编程题

1. 星际密码

2. 数根


选择题

1.

程序计数器和方法栈都属于线程私有,而方法区和堆都是属于线程共享的。

2.

Java 是半编译半执行语言,class 是与操作系统无关的,面向 JVM 的二进制文件。

运行时,JVM 实际上此时会把 class 文件翻译成操作系统能读懂的机器码。

JVM 也是有版本的。版本不同,就会有差异,同样的代码放到不同版本的 JVM 可能会无法运行。

3.

线程的启动不能直接调用 run(),而是得调用 Thread 类提供的 start 方法。

执行 start 方法才会启动一个子线程。

如果直接调用 run(), 就不会启动子线程,而是相当于调用普通的方法。

4.

接口中的变量都是被 public static final 修饰的 常量。

接口中方法则是被 public abstract 修饰。

编程题

1. 星际密码

代码实现:

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别

        int[] hash = new int[10001];
        hash[1] = 1;
        hash[2] = 2;

        for (int i = 3; i < hash.length; i++) {
            hash[i] = hash[i - 1] + hash[i - 2];
            hash[i] = hash[i] % 10000;
        }
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            for (int i = 0; i < n; i++) {
                int x = in.nextInt();
                System.out.printf("%04d", hash[x]);
            }
            System.out.println();
        }
    }
}

2. 数根

代码实现:

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String n = in.next();
            int ans = getNum(n);
            System.out.println(ans);
        }
    }


    public static int getNum(String n) {
        if (n.length() == 1) return Integer.valueOf(n);
        int sum = 0;
        for (int i = 0; i < n.length(); i++) {
            char c = n.charAt(i);
            sum += c - '0';
        }
        if (sum < 10) return sum;
        else return getNum(sum + "");

    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值