在代码中,只有第一种情况(整数变量到short)有编译错误(从int到short的有损转换)。为什么其他情况(整数字面改为short,最终整数变量改为short)没有这个相同的编译错误呢?
public class Test
{
public static void main(String[] args)
{
short shortNum = 0;
//integer variable to short
int intNum = 12;
shortNum = intNum;
//integer literal to short
shortNum = 12;
//final integer variable to short
final int finalNum = 12;
shortNum = finalNum;
}
}
将答案视为注释:
short shortNum = 0;
//integer variable to short
int intNum = 12;
shortNum = intNum; //doesn't work, because casting primitives is required any time you are going from a larger numerical data type to a smaller numerical data type.
//integer literal to short
shortNum = 12; //This is not integer literal per se, you're initializing your short variable with 12, which fits in short data type, so it's short.
//final integer variable to short
final int finalNum = 12; //your variable is final, and according to Java Language Specification, if final variable's value fits into the type you're casting it, then no explicit cast is needed.
shortNum = finalNum;
问题内容: 关于类型擦除的Java 教程似乎并未详细说明编译器强制转换插入的具体规则。有人可以解释一下本教程详细介绍的导致转换的特定规则(转载如下): 具体来说,我想知道是什么规则导致and 的插入。什么时候插入演员表,以及如何选择演员表类型? 问题答案: 将创建一个实例,该实例将接口的通用类型定义为 强制转换:开发人员无需强制转换,编译器无需添加强制转换 这基本上会告诉编译器忘记了泛型类型,并且
问题内容: 在上次考试中,我们进行了练习以确定以下代码的输出: 我的回答是,但现在我意识到这是错误的答案。应该是。但为什么? 问题答案: 假设您的语法是: 表达式是从左到右求值的,在这种情况下,2 + 3求和为5,当“添加”到字符串结果为时,将其加到1时,再加上1,结果是:
问题内容: 我正在接管另一个团队的项目,并且遇到了一些奇怪的Eclipse问题。 我使用Subversive作为插件,当我去检查主干时,它带我到标准的“签出为”对话框,在该对话框中,我可以选择签出方法,而这是唯一对我有用的方法(或适用)是最后一个选项()。 所以我指定了名称,然后该项目按正常方式签出,一切正常,除了… 尽管这 应该 是一个Java项目(WARs up to Java Web app
问题内容: 我有一个代码段: 为什么不自动类型转换为while ? 问题答案: 因为是,并且具有更大的范围。因此,将其分配给可能会导致数据丢失。 是一个常数,而编译时间保证在的范围内。
我正试图解决一个泛型问题。我在做一些手工选角,感觉好像我做错了什么。我对使用泛型有点陌生,所以很有可能我在某些方面误用了它们。如能提供指导,将不胜感激。 TLDR: 我有一个带有泛型方法的接口,该泛型方法采用参数。我在一个类中实现了这个接口,但在实现器中,我希望确保是特定类型的(假设,这样我就可以提取一些字段)。我怎么能那样做? 详细信息: 下面有一个接口和一个实现类,其中。 具有以下定义: 而具