java面试解决项目难题_Java转换难题者,不适合工作(或面试)
java面试解决项目难题
一个非常艰苦的面试问题可能是这样的:
int i = Integer.MAX_VALUE;
i += 0.0f;
int j = i;
System.out.println(j == Integer.MAX_VALUE); // true
为什么打印出正确的文字?
乍一看,答案似乎很明显,直到您意识到如果长时间更改int,事情都会变得很奇怪:
long i = Integer.MAX_VALUE;
i += 0.0f;
int j = (int) i;
System.out.println(j == Integer.MAX_VALUE); // false
System.out.println(j == Integer.MIN_VALUE); // true
您可能想知道发生了什么事? Java何时成为JavaScript?
首先,让我解释为什么长时间会产生如此奇怪的结果。
关于+ =的一个重要细节是它执行隐式强制转换。 您可能会认为:
a += b;
是相同的:
a = a + b;
基本上,除了大部分时间无关紧要之外,还有一个细微的差别:
a = (typeOf(a)) (a + b);
加法的另一个微妙特征是结果是两种类型的“范围更广”。 这意味着:
i += 0.0f;
实际上是:
i = (long) ((float) i + 0.0f);
将Integer.MAX_VALUE转换为浮点数时,会出现舍入错误(因为浮点数的尾数为24位),导致该值比开始时大一。 即它与:
i = Integer.MAX_VALUE + 1; // for long i
当您再次将Integer.MAX_VALUE + 1转换为int时,会溢出并具有:
Integer.MIN_VALUE;
j = Integer.MIN_VALUE;
那么,为什么长得到意外的值,而int恰好得到预期的值呢?
原因是当从浮点数舍入到整数时,它会舍入到0,直到最接近的可表示值。 从而:
int k = (int) Float.MAX_VALUE; // k = Integer.MAX_VALUE;
int x = (int) (Integer.MAX_VALUE + 1.0f) // x = Integer.MAX_VALUE;
注意:Float.MAX_VALUE / Integer.MAX_VALUE是1.5845632E29,这真是一个错误,但最好的int可以做到。
简而言之,对于int值Integer.MAX_VALUE,语句i + = 0.0f; 导致值跳一(强制转换为浮点数),然后跳一(强制转换为整数),以便您获得开始的值。
翻译自: https://www.javacodegeeks.com/2014/10/a-java-conversion-puzzler-not-suitable-for-work-or-interviews.html
java面试解决项目难题
java面试解决项目难题_Java转换难题者,不适合工作(或面试)相关推荐
- 面试中 项目遇见的难点答案_盘点产品经理求职面试中“可能”会遇到的十大项目管理问题...
" 在整个春招和秋招过程中,作者除了拿到产品经理岗位的OFFER之外,还拿到了网易游戏.大疆.商汤科技等公司的项目管理岗位的OFFER.有些学弟学妹会对产品经理和项目管理两个岗位在面试过程中 ...
- java 字符串转成图片_java 转换图片为字符串,将字符串转换成图片显示
java 转换图片为字符串,将字符串转换成图片显示, 该方法只适用于比较小的图片传输,50K以内: try{ // 将图片转换成字符串 File imgFile = new File("f: ...
- java自动生成项目编号_java - Apache POI,在同一文档中创建项目符号点和编号列表 - 堆栈内存溢出...
我试图用apache poi创建一个既包含圆点又包含编号列表的文档. 我想得到这样的结果. 名单: 清单1项目0 清单1项目1 清单1项目2 列表后的段落. 清单2: 清单2项目0 清单2项目1 清单 ...
- java 图片转jpg图片_JAVA转换jpg图片为渐进式图片
很早之前看到一篇<web前端图片极限优化策略>,了解有jpg分为baseline-jpeg和preogressive-jpeg. 具体的区别如下: baseline-jpeg: 在文件较大 ...
- java怎样解决除法精度_java 除法 精度问题
int a=4; int b=3; float c = (float) a/b; System.out.print(c);//输出:1 如果要的到精确的结果,要用下面的方法 int a=4; int ...
- java调用python项目实战_Java调用Python
今天遇到Java调用一个Python脚本的问题,纠结了大半天,遇到各种问题.网上搜索的大部分都是用jython,但是我想要调用的python脚本里有import urllib,这个urllib也不是什 ...
- java转json jar包_java转换json需导入的jar包说明
commons-beanutils-1.8.0.jar不加这个包 java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBe ...
- java代码解决的问题_java代码规范问题及解决方案
java代码规范问题总结 1.没有总是检查ResultSet结果对象 解决方案是通过if判断ResultSet结果是有有元素,常用条件是ResultSet结果的next,previous,first, ...
- java点歌系统项目下载_java swing mysql实现的ktv点歌系统项目源码附带视频运行教程...
<p> <span style="color:#555555;font-family:"font-size:16px;background-color:#FFFF ...
最新文章
- 万网稳居国内域名主机网站榜首 西部数码第二
- Connect Three
- 【机器视觉】 dev_set_check算子
- 3.MongoDB数据查询
- django生产环境部署
- mysqld.exe已停止工作_win7一直弹出DrUpdate.exe已经停止工作的解决方法
- 关于Nginx的配置文件解析
- 颇有微词 小模式 大蓝海 by 曹继忠 - 2013中国SEO排行榜
- 学会了selenium 模拟鼠标操作,你就可以偷懒点点点了
- 【渝粤教育】国家开放大学2019年春季 2766养羊技术 参考试题
- 2021年北京大学软件与微电子学院考研信息
- python怎么创建文本文件
- 经典伴读_java8实战_一网打尽
- DNS介绍,哪个好,速度快稳定
- php编程语言教程,php语言教程
- 关于svn提交performing vcs refresh 卡住的解决办法
- excel图片 html,微商相册生成EXCEL表格中将原图按HTML格式显示的实例
- 非计算机专业学生怎么走上计算机技术之路?
- 一分钟看懂深度学习中的准确率(Accuracy)、精度(Precision)、召回率(Recall)和 mAP
- linux服务器修改字体,Linux 字体修改
热门文章
- 2021“MINIEYE杯”中国大学生算法设计超级联赛(2)I love max and multiply(转化)
- 2021“MINIEYE杯”中国大学生算法设计超级联赛(7)Yiwen with Formula(任意模数FFT)
- 2017 ACM Jordanian Collegiate J.Efficiency Test 动态规划、类倍增
- Sentinel(十)之系统自适应限流
- 面试官问:为什么 Java 线程没有 Running 状态?我懵了
- Spring Cloud 终于按捺不住推出了自己的服务网关 Gateway
- 汇编语言(二十六)之自然数求和
- 任务调度(三)——Timer的替代品ScheduledExecutorService简介
- (四)十大经典排序算法(动画图解,代码完全)
- sh(Spring+Spring mvc+hibernate)——IDeptDao.java