short s1=1;s1=s1+1;有什么错误?short s1=1;s1+=1;有什么错?
对于short s1=1;s1=s1+1;由于运算的时候会自动的提升表达式的类型,所以结果是int型,再赋值给s1;编译器会报需要强制转换类型的错误,
对于short s1=1;s1+=1;由于+=是java语言规定的运算符,java编译器会自动的对它进行特殊处理,所以可以正确编译。
问题内容: 根据Java标准,和类型都使用2个字节,因此当我编写如下代码时: 出现错误,提示“可能丢失精度”。我在这里想念什么? 问题答案: 未签名,已签名。 因此,尽管它们都是2字节长,但它们将16位用于不同的目的。 类型范围是0到2 ^ 16-1(0到65535)。 的范围是-2 ^ 15〜2 ^ 15 - 1(-32,768至32,767)。
问题内容: 为什么这段代码会打印int? 问题答案: 因为在Java 1.0版中向上广播到,而在5.0版中添加了自动装箱。更改行为将破坏为较旧版本的Java编写的代码。 但是,这样的混合类型表明您的设计存在问题,这只是您将在拼图游戏中找到的。;)
问题内容: 有人可以解释以下原因的原因: 给我: 知道Java中short的最大值是32767正确吗? 问题答案: 根据您的价值1亿,我得到-7936。如果将1亿变为100万,我只能得到16960。 原因是值限制在-32768到+32767之间,并且Java在转换为a时仅保留最低有效16位(缩小的原始转换,JLS 5.1.3 )。有效地执行此操作:100万个mod 2 ^ 16(a中的16位)是1
问题内容: 我对shortJava中的原始类型有疑问。我正在使用JDK 1.6。 如果我有以下情况: 编译器不想进行编译-它说它“不能从int转换为short”,并建议我进行强制转换为short,因此: 确实有效。但是我的问题是为什么我需要演员表?a和b的值在的范围内short-短值的范围是。当我想执行操作(我没有检查其他操作)时,也需要进行强制转换。 如果对原始类型执行相同的操作int,则无需将
问题内容: 我对 Java中的原始类型有疑问。我正在使用JDK 1.6。 如果我有以下情况: 编译器不想进行编译-它说它“不能从int转换为short”,并建议我进行强制转换为short,因此: 确实有效。但是我的问题是为什么我需要演员表?a和b的值在的范围内short-短值的范围是{-32,768,32767}。当我想执行操作-,(我没有检查其他操作)时,还需要进行强制转换。 如果对原始类型执行
问题内容: 我有三个简短的变量。当我将两个加在一起并将结果分配给第三个时,eclipse告诉我需要将其强制转换为short! 但是,当我先进行简单分配,然后进行增量分配时,一切都很好。 为什么是这样 ? 问题答案: JLS(第15.8.2节)说: “将二进制+运算符应用于两个数字类型的操作数时,将执行加法运算,从而得出这些操作数之和。” “对操作数执行二进制数值提升(第 5.6.2节 )。” 这意
问题内容: 我已经定义了数组gx,数组arr为短型。但是为什么左边的运算可能会以int类型结束,而我必须将其转换为short?编译器错误可能是从int到short的有损转换。 这是我的代码。 } 那是因为所谓的拆箱吗?因此,这意味着我每次进行手术时都需要进行投射吗? 问题答案: 它不是开箱;这是“二进制数值提升”。 JLS的第5.6.2节规定: 当运算符将二进制数字提升应用于一对操作数时,每个操作
问题内容: 我引用了Herbert Schildt的第3章:数据类型,变量和数组: 字符的范围是0到65535。没有负字符。标准字符集ASCII(通常称为ASCII)的范围始终为0到127,而扩展的8位字符集ISO- Latin-1的范围为0到255。由于Java旨在允许程序在全球范围内编写使用时,将使用Unicode表示字符是有意义的。只要整数在范围内,也可以将整数分配给char。 (which