当前位置: 首页 > 面试题库 >

Java简短加法问题

段干浩荡
2023-03-14
问题内容

这可能已经在另一篇文章中得到了回答,但是我不明白为什么我的测试Java应用程序(1.7.0_01)无法编译某些内容。

这样编译:

Short a = (short)17;
a = (short)2 + 1;

我知道“ a + a”将产生一个整数。这样可以编译:

Short a = (short)17;
int shortTest = a + a;

那为什么不编译呢?

Short a = (short)17;
a = (short)a + a;

另外,我是否可以假设由于转换为整数而不能在短裤上使用+ =,-=等…?如果可以进行这些操作,有人可以提供示例吗?

编辑1
由于有人建议将它复制为原始类型’short’-Java中的强制类型转换,因此有一些投票关闭了此帖。但是,我的示例围绕Wrapper的“
Short”对象展开。关于强制转换包装器对象有重要且更复杂的规则,这是我认为需要重点关注的规则。

另外,正如我的原始文章所指出的那样,我正在寻找第三个代码块背后的 “为什么” 。我也想知道是否可以在Short Wrapper上使用“ +
=”,“-=”等“。


问题答案:

似乎由于某些原因删除了正确的答案:(short) a + a等于((short) a) + a,您在寻找(short)(a + a)

编辑

“为什么”背后却是运算符优先级,同样的原因,1 + 2 * 37与不是9。是的,基元和文字被视为相同。

您无法执行此操作,Short s = 1; s += 1;因为它与a = a + 1;a转换为an
intint不能转换为的位置相同Short。您可以像这样修复长版本:a = (short) (a + 1);,但是无法使用来进行显式转换+=



 类似资料:
  • 问题内容: 我有以下代码片段。 以下摘要是否正确(仅针对上面的 简短示例)? 但是, 考虑到之前的摘要,为什么我确实需要转换第二个方法调用的参数? 问题答案: 这些是相关的JLS部分: [JLS 5.1.1身份 Conversion](http://java.sun.com/docs/books/jls/third_edition/html/conversions.html#5.1.1) 任何类型

  • 问题内容: 我需要发送网络订单(我要使用Java编写的游戏服务器的简称)。我读到有关网络订单的信息,但找不到有关在数据发送之前发送的空头的任何详细信息。有人可以向我解释它是什么,以及如何使用Java将其发送给客户端吗? 问题答案: Java NIO字节缓冲区支持更改字节顺序。因此,网络字节顺序为Big Endian。 字节顺序是存储大于单个字节的数值的字节的顺序。有2种口味:Big Endian(

  • 这是一个很简短的教程,可以让你领略 Flux 和 Redux 思想的精髓。当你初次接触 Redux 时,Redux 官方文档极其详尽,是你的首选。本教程不同点是,通过介绍 Redux 使用来向你展示 Flux 概念。如果你想了解更多细节,请参谋 Redux 官方文档。

  • 最短路径问题的Dijkstra算法 是由荷兰计算机科学家艾兹赫尔·戴克斯特拉提出。迪科斯彻算法使用了广度优先搜索解决非负权有向图的单源最短路径问题,算法最终得到一个最短路径树。该算法常用于路由算法或者作为其他图算法的一个子模块。 这个算法的python实现途径很多,网上能够发现不少。这里推荐一个我在网上看到的,本来打算自己写,看了这个,决定自己不写了,因为他的已经太好了。 解决(Python) #

  • 对社区来说是非常新的。我想知道是否有人能解释为什么我上次的println会产生编译错误?非常感谢。

  • 问题内容: 我试图使代码更具可读性,所以我决定使用一些简短的IF语句。 这是我的无效代码(“不是声明”): 这怎么了 需要括号吗?哪里? 问题答案: “三元表达式” 只能用于条件 赋值 。也就是说,您可以执行以下操作: 因为三元表达式返回的东西(在此示例中为类型)。 它并不是真的打算用作短的,在线的。特别是,如果各个部分不返回值或返回不兼容类型的值,则不能使用它。(因此,如果两个方法都碰巧返回相同