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转换难题者,不适合工作(或面试)相关推荐

  1. 面试中 项目遇见的难点答案_盘点产品经理求职面试中“可能”会遇到的十大项目管理问题...

    " 在整个春招和秋招过程中,作者除了拿到产品经理岗位的OFFER之外,还拿到了网易游戏.大疆.商汤科技等公司的项目管理岗位的OFFER.有些学弟学妹会对产品经理和项目管理两个岗位在面试过程中 ...

  2. java 字符串转成图片_java 转换图片为字符串,将字符串转换成图片显示

    java 转换图片为字符串,将字符串转换成图片显示, 该方法只适用于比较小的图片传输,50K以内: try{ // 将图片转换成字符串 File imgFile = new File("f: ...

  3. java自动生成项目编号_java - Apache POI,在同一文档中创建项目符号点和编号列表 - 堆栈内存溢出...

    我试图用apache poi创建一个既包含圆点又包含编号列表的文档. 我想得到这样的结果. 名单: 清单1项目0 清单1项目1 清单1项目2 列表后的段落. 清单2: 清单2项目0 清单2项目1 清单 ...

  4. java 图片转jpg图片_JAVA转换jpg图片为渐进式图片

    很早之前看到一篇<web前端图片极限优化策略>,了解有jpg分为baseline-jpeg和preogressive-jpeg. 具体的区别如下: baseline-jpeg: 在文件较大 ...

  5. java怎样解决除法精度_java 除法 精度问题

    int a=4; int b=3; float c = (float) a/b; System.out.print(c);//输出:1 如果要的到精确的结果,要用下面的方法 int a=4; int ...

  6. java调用python项目实战_Java调用Python

    今天遇到Java调用一个Python脚本的问题,纠结了大半天,遇到各种问题.网上搜索的大部分都是用jython,但是我想要调用的python脚本里有import urllib,这个urllib也不是什 ...

  7. java转json jar包_java转换json需导入的jar包说明

    commons-beanutils-1.8.0.jar不加这个包 java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBe ...

  8. java代码解决的问题_java代码规范问题及解决方案

    java代码规范问题总结 1.没有总是检查ResultSet结果对象 解决方案是通过if判断ResultSet结果是有有元素,常用条件是ResultSet结果的next,previous,first, ...

  9. java点歌系统项目下载_java swing mysql实现的ktv点歌系统项目源码附带视频运行教程...

    <p> <span style="color:#555555;font-family:"font-size:16px;background-color:#FFFF ...

最新文章

  1. 万网稳居国内域名主机网站榜首 西部数码第二
  2. Connect Three
  3. 【机器视觉】 dev_set_check算子
  4. 3.MongoDB数据查询
  5. django生产环境部署
  6. mysqld.exe已停止工作_win7一直弹出DrUpdate.exe已经停止工作的解决方法
  7. 关于Nginx的配置文件解析
  8. 颇有微词 小模式 大蓝海 by 曹继忠 - 2013中国SEO排行榜
  9. 学会了selenium 模拟鼠标操作,你就可以偷懒点点点了
  10. 【渝粤教育】国家开放大学2019年春季 2766养羊技术 参考试题
  11. 2021年北京大学软件与微电子学院考研信息
  12. python怎么创建文本文件
  13. 经典伴读_java8实战_一网打尽
  14. DNS介绍,哪个好,速度快稳定
  15. php编程语言教程,php语言教程
  16. 关于svn提交performing vcs refresh 卡住的解决办法
  17. excel图片 html,微商相册生成EXCEL表格中将原图按HTML格式显示的实例
  18. 非计算机专业学生怎么走上计算机技术之路?
  19. 一分钟看懂深度学习中的准确率(Accuracy)、精度(Precision)、召回率(Recall)和 mAP
  20. linux服务器修改字体,Linux  字体修改

热门文章

  1. 2021“MINIEYE杯”中国大学生算法设计超级联赛(2)I love max and multiply(转化)
  2. 2021“MINIEYE杯”中国大学生算法设计超级联赛(7)Yiwen with Formula(任意模数FFT)
  3. 2017 ACM Jordanian Collegiate J.Efficiency Test 动态规划、类倍增
  4. Sentinel(十)之系统自适应限流
  5. 面试官问:为什么 Java 线程没有 Running 状态?我懵了
  6. Spring Cloud 终于按捺不住推出了自己的服务网关 Gateway
  7. 汇编语言(二十六)之自然数求和
  8. 任务调度(三)——Timer的替代品ScheduledExecutorService简介
  9. (四)十大经典排序算法(动画图解,代码完全)
  10. sh(Spring+Spring mvc+hibernate)——IDeptDao.java