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面试解决项目难题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339232.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

易语言 网页用什么编码_通常提到的编码器是干什么用的

编码器(encoder)是将信号(如比特流)或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。编码器把角位移或直线位移转换成电信号,前者成为码盘,后者称码尺.按照读出方式编码器可以分…

如何优雅地实现 C 编译期静态反射

部门请来了软件专家袁英杰咨询师指导我们软件开发,从中我也学到了很多姿势,在此记录下来宝贵的经验。苹果的 mbp 品控真是差劲,写这个东西把 LShift 键 按坏了,真是难受。反射能做什么最近和大师聊软件设计,其中一个点…

香草 jboss 工具_如何为JBoss Developer Studio 8设置BPM和规则工具

香草 jboss 工具最新的JBoss Developer Studio(JBDS)的发布带来了有关如何开始使用尚未安装的各种JBoss Integration和BPM产品工具集的问题。 在本系列文章中,我们将为您概述如何安装每套工具并说明它们支持哪些产品。 这将有助于您在着手进…

在c语言中 函数的作用是什么,C语言程序中函数的定义

C语言程序中函数的定义C语言的函数问题是困扰很多学者的问题的,c程序中什么是函数呢?下面啦小编为大家精心推荐的c程序中函数的定义,希望能够对您有所帮助。C语言读书笔记--函数先来看看函数的一般形式,尝试写一个加法的函数:思路…

局域网steam联机_适合和基友联机一起玩的单机游戏(1)

GTA5还有什么比在GTA中,和几个好基友一起,组建帮派,联机打砸抢,组队完成任务,和其他帮派火并更有意思的呢?游戏丰富的内容,各式各样的玩法,广袤的可探索空间,不愧是史上最…

C/C assert()函数用法总结与注意事项

1. 简介assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行。原型定义:#include void assert( int expression );assert的作用是先计算表达式 expression ,如果其值为假(即为0)&#xff…

编写start脚本程序_使用可编写脚本的终结点遍历REST应用程序

编写start脚本程序我喜欢JDK附带ScriptEngine的事实。 当您要评估服务器环境中已经部署的应用程序并进行故障排除时,它非常灵活。 将此REST端点添加到Java EE应用程序中,它将使您可以立即访问该应用程序的内部状态。 package myrestapp;import java.io.…

ppt flash倒计时器_PPT三大神器之iSlide插件

本文约1200字,阅读预计需要4分钟。为了提升PPT制作效率,我们有必要使用一些插件来提升工作效率,而PPT有三大插件神器,分别是iSlide、PA口袋动画,Onekey Tool(俗称OK插件),今天我们就…

c语言输出每个数占10列宽,杭州师范大学C语言试题第1套介绍.doc

一、判断题第1题:函数调用可以出现在表达式中 对第2题:若有定义一维数组int a[4]的首地址为0078H,则a[1]元素的首地址是0079H(设int型数据占两个字节)。错第3题:在标准C语言中,共用体变量中的各成员是共同占用一块存储…

C 语言中std::array的神奇用法总结

std::array是在C 11标准中增加的STL容器,它的设计目的是提供与原生数组类似的功能与性能。也正因此,使得std::array有很多与其他容器不同的特殊之处,比如:std::array的元素是直接存放在实例内部,而不是在堆上分配空间&…

java线程池并发_线程池之外:Java并发并不像您想象的那样糟糕

java线程池并发Apache Hadoop,Apache Spark,Akka,Java 8流和Quasar: 针对Java开发人员的经典用例以及最新的并发方法 关于并发性更新概念的讨论很多,但是许多开发人员还没有机会将他们的想法缠住。 在本文中&#xff…

网络营销理论模型_网络营销:课堂笔记(第四章下)

网络营销产品策略(续上篇)本章知识清单三、网络品牌如何打造?什么是品牌目前为止,对品牌的含义一直没有一个统一的、权威的解释。如果从品牌的构成要素和基本功能方面来界定品牌的话,最具有代表性和最经典的表述当属美国市场营销协会的定义。…

ios多线程Android,iOS 关于多线程

一.进程和线程1.什么是进程进程是指在系统中正在运行的一个应用程序每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内比如:同时打开QQ,Xcode,系统就会分别启动2个进程通过”活动监视器”可以查看Mac系统中所开启…

为什么C语言成了大学的必修课?

何为C语言?中文名: C语言外文名: The C Programming Language类别: 程序设计语言创始人: Dennis MacAlistair Ritchie创始时间: 1972年发源: BCPL语言C语言是一门面向过程、抽象化的通用程序设计语言&…

websockets_使用用户名/密码和Servlet安全性保护WebSockets

websocketsRFC 6455提供了WebSockets安全注意事项的完整列表。 其中一些是在协议本身中烘焙的,其他一些则需要更多有关如何在特定服务器上实现它们的解释。 让我们来谈谈协议本身内置的一些安全性: HTTP请求中的Origin头仅包含标识发起该请求的主体&…

android横向排列 间隙,Android开发消除横向排列的多个Button之间的空隙

一.问题重述摘要里描述的可能不太清楚,问题如下图:如何消除Button1和Button2之间的空隙,以及Button与左右边界之间的空隙?二.问题根源这里出现的空隙其实是Button的背景图片中的透明部分,如下图:(两个按钮被…

电脑的发展史_互联网发展史 硅谷传奇之 IBM

2节 硅谷传奇之 IBM为什么要讲IBM呢?互联网是因计算机而诞生的,互联网的发展史与电脑的发展史有很多是重叠的,而IBM是上世纪60年代八大电脑公司之首。在互联网席卷全球之前,在硅谷是以无线电、军事技术、硅晶体管而闻名的。这些东…

C 之父:精通C 很难,但你一天之内就能学习使用C

精通C 听起来好像就是一个笑话。为什么C 比别的语言难学那么多?其实这基本上是因为C 之父Bjarne Stroustrup 说过的一句话“我特别的讨厌语言的设计者把自己的喜好强加给用户”(看向go)。结果C 为了不限制你的想法,于是也就变成了…

dbunit使用_摆脱困境:在DbUnit数据集中使用空值

dbunit使用如果我们正在为使用Spring Framework的应用程序编写集成测试,则可以通过使用Spring Test DbUnit将DbUnit与Spring测试框架集成。 但是, 这种集成并非没有问题 。 通常,我们必须在运行测试之前向数据库中插入空值,或者…

android汉字田字格,画一个简单的田字格

image.png上代码package com.nick.customview;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.support.annotation.Nullable;import android.sup…