Java中常见的陷阱题及答案
发布时间 - 2026-01-10 22:32:08 点击率:次1、找奇数:
public static boolean isOdd(int i){
return i % 2 == 1;
}
上面的方法真的能找到所有的奇数么?
A:没有考虑到负数问题,如果i为负则不正确。应该return i%2 == 0
2. 浮点数相减
System.out.println(2.0-1.9);
A:Java中的简单浮点数类型float和double不能够进行运算。不光是Java,在其它很多编程语言中也有这样的问题。在大多数情况下,计算的结果是准确的,但是多试几次(可以做一个循环)就可以试出类似上面的错误。当然加减乘除都有可能有问题,
比如:
System.out.println(0.05+0.01); System.out.println(1.0-0.42); System.out.println(4.015*100); System.out.println(123.3/100);
这是因为有些十进制有限位数的小数,到二进制里面可能会变成无限循环小数,在浮点数中不能表示而损伤精度。
解决方法:
1. 如果是判断a-b是否等于c,或者a+b是否等于c的,可以使用
if(0.05+0.01-0.06 < 0.0000001)
{
}
2. 在《Effective Java》这本书中提到一个原则,float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.BigDecimal来解决
System.out.println((new BigDecimal("2.0")).subtract(
new BigDecimal("1.9")).doubleValue());
3. 无限循环
public static final int END = Integer.MAX_VALUE;
public static final int START = END - 2;
public static void main(String[] args) {
int count = 0;
for (int i = START; i <= END; i++)
count++;
System.out.println(count);
}
A:这里无限循环的原因就是当i为Integer.MAX_VALUE时,此时for循环是先++,然后判断i是否<=END,当i为 Integer.MAX_VALUE再++时,i变成了负数。所以就一直循环下去。
变成负数的原因就是int溢出了。这里将<=END改成<END就可以解决问题。
4. 到底返回什么?
public static boolean decision() {
try {
return true;
} finally {
return false;
}
}
A:返回false。此时return true是不可达语句,在编译阶段将优化去掉。
3、下面来分享一段面试可能会遇到的陷阱题
看代码:
int a=5;
System.out.println("value is"+((a<5)? 10.9:9 ));
输出结果为:
A.编译错误 B10.9 C.9 D 以上答案都不对。
运行执行结果为:
value is9.0
因为((a<5) ? 10.9 )有一个10.9java 根据运算符精度自动转型。因此后面的 9 也会变成9.0 。
所以选D 。
a
StringBuffer str1=new StringBuffer("123");
StringBuffer str2=new StringBuffer("123");
if(str1.equals(str2)){
System.out.println("str1.equalstr2");
}else{
System.out.println("str1.notequalstr2");
}
结果为: str1.notequalsstr2 这说明StringBuffer 没有重写 equals 方法。
Float fa=new Float(0.9f);
Float fb=new Float(0.9f); //Float fb=new Float("0.9f");
Double db=new Double(0.9f);
if(fa==fb){ //false
System.out.println("fa==fb");
}else{
System.out.println("fa!=fb");
}
if(fa.equals(fb)){ //true
System.out.println("fa.equalfb");
}else{
System.out.println("fa!equalfb");
}
if(db.equals(fb)){ //false
System.out.println("db.equalfb");
}else{
System.out.println("db!equalfb");
}
结果为:
fa!=fb fa.equalfb db!equalfb Float 型与Double 型肯定不相等
如果还有其他欢迎补充。
Reference:
1. http://blog.csdn.net/ol_beta/article/details/5598867
2. http://zhidao.baidu.com/link?url=0UyDU42L7DXZitdydJMG3IIUDIf3xidFCRAObZAq6SHFCEaNnp2Oyuq1KVwBvmlR0UZGHSjD4f6A1yD0d65JL_
3. http://bbs.csdn.net/topics/300023952
4. http://z466459262.iteye.com/blog/739300
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
# java
# 陷阱题
# 陷阱
# java中for循环删除集合陷阱
# java集合迭代器Iterator中的remove陷阱
# 浅谈Java自动装箱与拆箱及其陷阱
# Java陷阱之assert关键字详解
# Java中典型的内存泄露问题和解决方法
# 15个高级Java多线程面试题及回答
# 探讨Java中最常见的十道面试题(超经典)
# java+sql2005 随机抽取试题的代码
# 浅析java中Integer传参方式的问题
# Java编程中的一些常见问题汇总
# 浮点数
# 就可以
# 循环小数
# 都有
# 加减乘除
# 也会
# 几次
# 要用
# 能有
# 或者是
# 考虑到
# 做一个
# 可达
# 解决问题
# 重写
# 可以使用
# 书中
# 能找到
# 这篇文章
# 中也
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么为数据库表字段添加索引以优化查询
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
JavaScript如何实现倒计时_时间函数如何精确控制
php485函数参数是什么意思_php485各参数详细说明【介绍】
如何实现javascript表单验证_正则表达式有哪些实用技巧
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
如何在橙子建站中快速调整背景颜色?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
如何获取上海专业网站定制建站电话?
JS碰撞运动实现方法详解
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
如何自定义建站之星模板颜色并下载新样式?
Laravel定时任务怎么设置_Laravel Crontab调度器配置
Laravel如何使用Telescope进行调试?(安装和使用教程)
Python高阶函数应用_函数作为参数说明【指导】
如何快速生成高效建站系统源代码?
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
Linux安全能力提升路径_长期防护思维说明【指导】
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
SQL查询语句优化的实用方法总结
网页设计与网站制作内容,怎样注册网站?
如何确保FTP站点访问权限与数据传输安全?
PHP 500报错的快速解决方法
如何快速打造个性化非模板自助建站?
如何用搬瓦工VPS快速搭建个人网站?
北京网站制作公司哪家好一点,北京租房网站有哪些?
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
如何正确选择百度移动适配建站域名?
浅析上传头像示例及其注意事项
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
教你用AI润色文章,让你的文字表达更专业
iOS验证手机号的正则表达式
EditPlus 正则表达式 实战(3)
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
如何在橙子建站上传落地页?操作指南详解
Laravel观察者模式如何使用_Laravel Model Observer配置
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤
Laravel怎么实现模型属性的自动加密
如何快速辨别茅台真假?关键步骤解析
宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
如何在 React 中条件性地遍历数组并渲染元素
如何快速查询域名建站关键信息?
Laravel如何使用查询构建器?(Query Builder高级用法)
重庆市网站制作公司,重庆招聘网站哪个好?
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践
UC浏览器如何设置启动页 UC浏览器启动页设置方法
下一篇:萧遥特殊效果查看方法
下一篇:萧遥特殊效果查看方法

