Java编程:探究阶乘末尾零的个数与自动拆装箱原理
165 浏览量
更新于2024-08-29
收藏 293KB PDF 举报
"Java编程题目集,包括末尾0的个数问题和Integer与int的自动拆装箱问题。"
本文主要介绍了两个Java编程题目及其解题思路。
1. **末尾0的个数——滴滴笔试题**
题目要求计算正整数n的阶乘n!末尾0的个数。这个问题的关键在于理解末尾的0是2和5相乘的结果。由于2的出现频率远高于5,因此只需要关注n!中5的个数即可。可以通过循环从n到5逐个检查每个数包含多少个5的因子。例如,当i是5的倍数时,它包含一个5的因子;如果i是25的倍数,那么它包含两个5的因子(因为25=5×5),依此类推。以下是一个简单的Java代码实现:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int count = 0;
for (int i = n; i >= 5; i--) {
int tmp = i;
while (tmp % 5 == 0) {
count++;
tmp = tmp / 5;
}
}
System.out.println(count);
}
}
```
2. **Integer与int的自动拆装箱问题——2016阿里巴巴笔试题**
这个问题考察了Java 1.5引入的自动拆装箱特性。自动装箱是将基本类型转换为对应的包装类对象,而自动拆箱则是相反的过程。题目中,`int i=0;` 和 `Integer j=new Integer(0);` 分别定义了一个int类型的变量i和Integer类型的对象j。由于Java的自动拆装箱,比较操作`i==j`实际上是将i拆箱为Integer然后进行引用比较,而`j.equals(i)`是调用Integer对象的方法进行值比较。因此,`i==j`的结果取决于编译器的行为,可能是false,也可能是true,取决于是否进行了常量池优化;而`j.equals(i)`始终返回true,因为两者代表的数值相等。正确答案是C. false,true。
这两个题目都是Java基础编程中的常见问题,涉及到了数学逻辑和语言特性的理解。对于Java程序员来说,熟练掌握这类问题的解决方法对提升编程能力至关重要。通过不断的刷题练习,可以加深对这些知识点的理解,提高编程技能。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2023-11-06 上传
2021-06-29 上传
2024-08-15 上传
2020-12-20 上传
2020-12-21 上传
2021-03-07 上传
不善言辞的我
- 粉丝: 258
- 资源: 921
最新资源
- aqqa水文化学软件
- mybatis-generator-demo:mybatis逆向工程实践
- VC++屏蔽的编辑框 masked edit实例
- (修)10-18b2c电子商务网站用户体验研究——以京东商城为例.zip
- 基于matlab的拉普拉斯滤波实例分析.zip
- easyengine-vagrant:用于测试 Easy Engine 的 Vagrant 文件
- grader:一个用于创建和应用考试和测验的应用程序
- release-pr-test
- 基于matlab的高斯高通滤波实例分析.zip
- 搜索算法:穷举,爬山等
- PowerModels.jl:用于电网优化的JuliaJuMP软件包
- 基于matlab的高斯低通滤波实例分析.zip
- turbo-vim:Vim 支持 Tmux、RubyRails、Rspec、Git 和 RVM
- autodoc_pydantic:将pydantic模型无缝集成到您的Sphinx文档中
- VC++批量删除指定文件完整实例包
- MySQL学习教程.zip