五皇后问题 java_Java的5个古怪问题

五皇后问题 java

我们有机会接触到一些最奇怪的Java难题

即使是最有经验的Java开发人员,也会在这篇文章中发现令人困惑的问题。 或者至少是有趣的(绝对不公平)。 在经历了Java Deathmatch冒险之后,我们决定这次发布一系列不同的问题,着重强调您可以使用Java进行的一些不寻常且古怪的事情。 对于我们之前的测验结果,您可以查看这篇文章 ,看看是否可以解决5个开发人员中有4个出错的问题。 weird.java_

在家中(或办公室)尝试一下。 但是,请不要在现实的Java应用程序中使用它! 除非您试图诱骗某个人,否则一切都会顺利进行。 非常感谢Peter Lawrey与我们分享了大多数这些问题。 解决方案可在本文的底部找到,但请尝试诚实地尝试一下,看看您能解释多少。

问题是……

1.右括号被高估了

奇怪的是,下面的代码可以完美地编译。 但是它打印什么?

import static java.lang.Character.getNumericValue;public class BigCharacters {public static void main(String... a‮) {for (char c‮ = 1; c‮ > 0; c‮++)if (getNumericValue(c‮) > 50)System.out.println(c‮ + ": " + getNumericValue(c‮));}
}

注意: getNumbericValue返回Unicode字符表示的数字int值。 如果字符没有数字值,则返回-1。

托托

2.生命,宇宙和一切的答案

ew 我们在这个问题上有一个右括号。 但是,以下代码段输出了什么? 又为什么呢

Integer a = 42;
Integer b = 42;
System.out.println(a == b);
Integer c = 666;
Integer d = 666;
System.out.println(c == d);

3.字符运算

继续。 您能解释一下这里发生了什么吗?

char ch = '0';
ch *= 1.1;
System.out.println(ch);

可能的选择:

  • 编译器错误
  • 运行时错误
  • 列印0
  • 版画4

4.不要放弃!

这就是这个世界。 这里发生了什么?

String _‎ = "Hello ";
String _‏ = "World";
String _‎‏ = " !!";
System.out.println(_‎+_‏+_‎‏);

剧透警告:它打印出“ Hello World !!”

¯\ _(ツ)_ /¯

幽灵破坏者

5.这个问题是自我意识的

打印WTF的最小值是多少? x的类型取决于您。

if (x != (x += 0.0f)) System.out.println("WTF");

解决方案

1.右括号被高估了

首先,一些背景。 有一个用\ u202e编码的字符,该字符用于从右到左的语言,如希伯来语或阿拉伯语,并使其余的行以相反的顺序显示。 这是一个零宽度的字符,不仅如此,而且用作Java标识符也是有效的。 尝试复制代码段,在光标周围移动,然后您会注意到它在代码中的显示位置。

除了RTL语言支持之外,如果您想对某人恶作剧,它也非常有用。 将封闭括号替换为后面带有该字符的开放括号以反转该行的其余部分–然后查看接下来会发生什么。 如果您决定这样做,请向我们发送受害者面部的照片。 :)

2.生命,宇宙和一切的答案

整数是对象,这与原始类型的整数相反。 但是,此代码段:

Integer a = 42;
Integer b = 42;
System.out.println(a == b);
Integer c = 666;
Integer d = 666;
System.out.println(c == d);

打印出第一个比较结果为“ true”,下一个为“ false”。 这对于int无效,但是由于Integer是独立的对象,因此c和d不是同一对象是有意义的。 但是为什么a == b?

出于性能原因,Integer类型保留所有对象的缓存,其值在-128到127范围内。 因此,当您在该范围内声明新变量时,实际上是在指同一对象。

3.字符运算

此代码段显示了4:

char ch = '0'; // ASCII for ‘0’ is 48
ch *= 1.1; // 48 x 1.1 is 52.8 which turns to 52 when cast to char
System.out.println(ch); // 52 represents ‘4’ in ASCII

4.不要放弃!

_,_和_为什么是不同的变量? 您可能已经猜对了。 答案是使用隐藏的字符作为合法的Java标识符传递。 您可以在此处直接在Peter Lawrey的博客上阅读有关它的更多信息。

5.这个问题是自我意识的

那么,什么使该表达式被评估为真呢?

if (x != (x += 0.0f)) System.out.println("WTF");

您可以使用任何String,并且(1 << 24)+ 1的int或long可以作为这些类型的最小值。 但是它们所有的最小值是Double.MIN_VALUE,当转换为浮点数时会四舍五入为0.0f。

最后的想法

希望您喜欢这些问题! 但是,如果您发现自己的代码库中的困惑者花费了太多时间,那可能就不理想了。 对于这种情况,我们已经为Java构建了Takipi 。 Takipi是一个Java代理,它收集解决生产错误所需的所有数据-无需遍历日志文件并尝试重新创建导致错误的状态。 它使您可以查看导致错误的变量值(遍及整个堆栈),并将其覆盖在代码中。

翻译自: https://www.javacodegeeks.com/2015/10/5-weird-java-questions-that-will-make-your-head-spin.html

五皇后问题 java

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

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

相关文章

java加密成固定长度_Java使用MD5加密,生成的密文长度只有31位

在使用MD5加密时&#xff0c;生成的密文长度只有31位&#xff0c;该怎么解决&#xff1f;代码如下&#xff1a;public static String toMd5(String str) {String re null;byte encrypt[];try {byte[] tem str.getBytes();MessageDigest md5 MessageDigest.getInstance("…

可以自定义模板的ide_将IDE检查应用于自定义Java批注

可以自定义模板的ideJ2SE 5中注释的引入改变了我们编写和处理Java的方式。 除了Java SE的预定义注释外 &#xff0c;框架&#xff0c;IDE和工具包还引入了自己的自定义注释 。 Checker框架提供了一些示例&#xff0c;说明如何使用自定义批注在Java中增加类型安全性 。 在本文中…

java设置弹出框为模态_点击按钮弹出模态框的一系列操作代码实例

实现功能提交按钮功能&#xff1a;点击提交按钮的时候都会弹出模态框&#xff0c;但是有不同的状态&#xff1a;审核状态未通过&#xff1a;弹出未通过理由的input输入框&#xff0c;模态框中除了取消和确定按钮&#xff0c;新增确定并保存医院的按钮审核状态已通过&#xff1a…

java中bpmn流程图_Java学习之BPMN知识以及Activiti的流程部署

BPMN的介绍Activiti项目是一项新的基于Apache许可的开源BPM平台&#xff0c;从基础开始构建&#xff0c;旨在提供支持新的BPMN 2.0标准&#xff0c;包括支持对象管理组(OMG)&#xff0c;面对新技术的机遇&#xff0c;诸如互操作性和云架构&#xff0c;提供技术实现。那什么是BP…

javaone_JavaOne 2015 –第二十版十大收获

javaone我们刚刚在旧金山有了JavaOne的第二十版。 这将是我自2004年以来第十二次参加不间断的系列活动。最大的教训是什么&#xff0c;可以揭示Java的未来。 模块化斗争 自从Java 2007首次提到模块以来&#xff0c;已经花费了将近9年的时间&#xff0c;或者说&#xff0c;直到…

java批量处理数据库语句_Java项目中调用bat批处理进行多用户数据库备份

Java项目中调用bat批处理配合使用BCP进行多用户数据的备份一、项目需求最近项目中需要对数据库(Sql Server系列数据库)进行备份。项目中的需求不是简单的整个数据库的备份&#xff0c;而是根据用户来备份&#xff0c;具体的备份策略如下&#xff1a;①系统为某一赛事管理类型的…

mycat和应用程序集成_企业应用程序集成简介

mycat和应用程序集成本文是我们名为“ EAI的Spring集成 ”的学院课程的一部分。 在本课程中&#xff0c;向您介绍了企业应用程序集成模式以及Spring Integration如何解决它们。 接下来&#xff0c;您将深入研究Spring Integration的基础知识&#xff0c;例如通道&#xff0c;转…

activemq和jms_带有ActiveMQ和Maven的JMS Sender应用程序

activemq和jms我们已经看到了如何使用ActiveMQ和Maven创建JMS Receiver应用程序 。 让我们看看我们如何类似地创建JMS Sender应用程序 。 web.xml与创建接收器应用程序时使用的相同&#xff1a; <web-app xmlns"http://java.sun.com/xml/ns/javaee"xmlns:xsi&qu…

java经纬度曲线简化_JAVA 后台计算 经纬度 最短距离

1、 代码块package com.ilogie.tms.util;import java.io.IOException;import java.math.BigDecimal;import java.text.MessageFormat;public class LocationUtils {// 以下为 获得 两点之间最短距离private static final BigDecimal EARTH_RADIUS MathUtil.toBigDecimal(6378.…

java ee的小程序_在Java EE应用程序中实现自动重试

java ee的小程序最初&#xff0c;我想将此博客称为“ 具有拦截器驱动的重试策略的灵活超时 ”&#xff0c;但后来我认为它太“繁重”。 该声明以及修改后的标题应该&#xff08;希望&#xff09;使您了解此帖子可能谈论的内容;-) 触发 这篇文章主要由我在较早的一篇文章中收到…

jboss eap 7_EAP 7 Alpha和Java EE 7入门

jboss eap 7红帽JBoss企业应用程序平台7&#xff08;JBoss EAP 7&#xff09;是基于开放标准构建并符合Java Enterprise Edition 7规范的中间件平台。 它建立在WildFly等经过验证的创新开源技术之上&#xff0c;这将使Java EE 7的开发更加容易。 这是有关如何开始使用最新ALPHA…

为什么说php单线程,php单线程的缺点是什么?

PHP即“超文本预处理器”&#xff0c;是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言&#xff0c;与C语言类似&#xff0c;是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习&#xff0c;使用广泛&#xff0c;主要适用于Web开发领…

openshift 部署_在OpenShift上部署Java EE微服务

openshift 部署我昨天用WildFly Swarm在博客上发布了有关简单JAX-RS微服务的博客。 您学习了如何使用Maven构建所谓的“胖子”&#xff0c;还使用Maven Docker插件对我们的微服务进行了Docker化并在Docker Machine上本地运行。 这是在本地测试事物的好方法。 到目前为止&#x…

apache.camel_Apache Camel 2.16发布–十大亮点

apache.camelApache Camel 2.16于上周五发布。 这篇博客文章是我尝试在此新版本中进行前10名&#xff08;加1作为奖励&#xff09;的亮点。 1.动态到 来自骆驼用户的最常见的常见问题是&#xff0c;如何将消息发送到端点&#xff0c;uri应该使用消息中的动态值&#xff08;例…

设计模式示例_责任链设计模式示例

设计模式示例本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 &#x…

edmonds算法matlab,匈牙利算法的matlab实现

匈牙利算法算法简介算法原理算法实现(附代码)测试算法简介下面摘用百度百科中的解释。匈牙利算法(Hungarian method)是由匈牙利数学家Edmonds于1965年提出&#xff0c;因而得名。匈牙利算法是基于Hall定理中充分性证明的思想&#xff0c;它是二分图匹配最常见的算法&#xff0c…

java jooq_将Java EE与jOOQ结合使用的初学者指南

java jooqJava EE附带了自己的持久性API&#xff1a;JPA。 当您想要将RDBMS实体&#xff08;表/关系&#xff09;映射到Java实体&#xff08;类&#xff09;时&#xff0c;JPA最强大&#xff0c;主要遵循1&#xff1a;1映射策略。 其背后的思想是&#xff0c;业务逻辑通常不像关…

php扩展 waf,基于PHP扩展的WAF实现

访问一下看看结果&#xff1a;可以看到ls命令成功的执行了&#xff0c;也就是说我们的正常文件是不会被拦截的&#xff0c;而只有upload目录中的文件会被拦截&#xff0c;这样做又会引发另一个弊端&#xff0c;倘若攻击者通过某种方法将shell写入正常的文件中&#xff0c;或是与…

junit4 集成测试_使用JUnit规则进行干净的集成测试

junit4 集成测试JUnit Rules的优势&#xff0c;尤其是在进行集成测试时&#xff0c;几乎不能被高估。 在本文中&#xff0c;我们将阐明ExternalResource扩展的有用性。 在我们必须使用抽象外部资源的第三方库的情况下&#xff0c;这简化了灯具控制。 作为示例&#xff0c;我们将…

多项式在matlab中的应用,matlab的应用-多项式函数及多项式拟合

matlab的应用-多项式函数及多项式拟合 Matlab 的应用- 多项式函数及多项式拟合 本节将向大家简要介绍 matlab 在多项式处理方面的应用。 多项式函数主要有&#xff1a; roots 求多项式的根 poly 特征多项式 polyval 多 项式的计算 poly2str(p, x )多项式代换 polyfit 多项式曲线…