short s1 = 1;
s1 = s1 + 1;
有什么错?
short s1 = 1;
s1 +=1;
第一段代码的分析:
这段代码的第二句(s1=s1+1)就是简单的两个数字相加,结果赋值给第一个变量。
此时运算结果的数据类型由以下规则依次决定:
1,如果参与相加运算的表达式或数字有double类型,则结果是double类型
2,如果参与相加运算的表达式或数字有float类型,则结果是float类型
3,如果参与相加运算的表达式或数字有long类型,则结果是long类型
4,如果参与相加运算的表达式或数字没有以上3中数据类型,则结果是一律是int类型
按照这个规则,s1=s1+1;那么最终的运算结果应该是int,所以赋值给short类型的s1会出错。
第二段代码的分析:
类似于 num1 += num2 这样的形式的复合赋值表达式,,实际上等同于(num1的类型)(num1+num2),也就是将两个数相加之后的结果强制转型为赋值运算符左边操作数的数据类型。唯一的不同点就是num1只会计算一次,所以理论上复合赋值运算符的效率更高。
s1+=1;就会等同与 s1=(short)(s1+1);所以结果是没问题的。
分享到:
相关推荐
还有复合赋值运算符,如`+=`, `-=`等,它们结合了算数运算和赋值。例如,`x += 3;`相当于`x = x + 3;`。 3. **逻辑运算**: 逻辑运算符包括AND(&&), OR(||)和NOT(!)。这些运算符用于处理布尔值。例如,`if (a > 0 ...
除了基本的赋值运算符外,Java还提供了一组复合赋值运算符,它们结合了数学运算和赋值操作,简化了代码。这些运算符包括: 1. 加法赋值运算符(+=):例如,`x += 6` 相当于 `x = x + 6`,它会将x当前的值加上6,...
- 连接赋值运算符 (+=, -=, *=, /=, %=) 用于简化复合操作。例如,`x += 5;` 相当于 `x = x + 5;` 6. 比较和逻辑运算符: - 虽然算术运算符主要用于数学计算,但Java中还有比较运算符(==, !=, <, >, <=, >=)和...
复合赋值运算符包括加法赋值(+=)、减法赋值(-=)、乘法赋值(*=)、除法赋值(/=)、模运算赋值(%=)、左移赋值(<<=)、右移赋值(>>=)、无符号右移赋值(>>>=)、按位与赋值(&=)、按位或赋值(|=)以及按位...
7. **复合赋值运算符**:像`+=`, `-=`等,它们结合了运算和赋值。例如,`x += y`等同于`x = x + y`。 8. **类型转换运算符**:` `(类型)`,用于将一种数据类型转换为另一种。例如,`(int)doubleValue`将双精度...
此外,Java还提供了复合赋值运算符,如`+=`、`-=`等,它们在赋值的同时进行运算,如 `x += 3` 相当于 `x = x + 3`。 比较运算符(==、!=、<、>、<=、>=)用于比较两个值是否相等或满足特定关系。例如,`if (x > y)`...
/*设计一个有理数类Rational,要求对运算符“+”“-”“”“/”和“+=”“-=”“=”“/=”进行重载,完成有理数的加减乘除以及加减乘除复合赋值运算;并且重载“<<”和“>>”操作符完成有理数的输入和...
),位运算符(&,|,^,~,,>>,>>>)以及赋值运算符(=,+=,-=,*=,/=,%=)。了解这些运算符的用法和优先级对于编写正确的代码至关重要。 接着是表达式,它是Java程序中计算和决策的核心部分。一个表达式通常...
基础的赋值运算符是`=`, 还有复合赋值运算符如`+=`, `-=`等,如`x += 3`相当于`x = x + 3`。 3. **比较运算符**:这些运算符用于比较两个值,包括等于(==), 不等于(!=), 大于(>), 小于(<), 大于等于(>=)和小于等于...
在Java编程语言中,复合赋值运算符是提高代码简洁性的一种重要工具。这些运算符结合了赋值操作(=)与算术或位运算,使得我们能够在一条语句中完成变量的计算和赋值。在"java代码-例子2-4 理解复合赋值运算符"这个...
- **复合赋值运算符** 如`+=`、`-=`、`*=`、`/=`、`%=`等,它们简化了赋值操作。 例如,`x += 4;` 实际上等价于 `x = x + 4;`。然而,在使用这些运算符时需要注意数据类型的兼容性问题。 - **示例**: ```java ...
day01回顾: 数字 整数int, 浮点数float, 复数complex, 布尔型数bool(True/False) 运算符 算术运算符 + - * / // % ** is , is not 表达式 表达式一定会返回一个对象(数据) ... 复合赋值运算符 a += 10
复合赋值运算符则结合了运算和赋值。 6. **条件运算符**:三元运算符(? :)。这是Java中的一个特殊的运算符,用于根据条件选择执行其中一个表达式。 7. **增强赋值运算符**:++、--。这些运算符用于递增或递减...
复合赋值运算符结合了赋值和算术运算,如`+=`、`-=`、`*=`、`/=`、`%=`,它们分别代表加法赋值、减法赋值、乘法赋值、除法赋值和取模赋值。例如,`num1 += 2`相当于`num1 = num1 + 2`。 在提供的代码片段中,`num1 ...
+ +=:两数相加之后,结果赋给前者。 + -=:两数相减之后,结果赋给前者。 + \*=:两数相乘之后,结果赋给前者。 + /=:两数相除之后,结果赋给前者。 + %=:两数相取余之后,结果赋给前者。 + &=:两数相与...
复合赋值运算符如"+="、"-="、"*="和"/="结合了运算和赋值的功能,使得代码更简洁。例如: ```java int x = 10; int y = 10; y = y - 6; // 相当于 y = y - 6 x = x + 2 * 5; // 相当于 x = x + (2 * 5) ``` 复合...
还有复合赋值运算符如 `+=`, `-=`等,用于便捷地进行加减乘除等操作并赋值。 32. **混合赋值运算符** 如 `*=`, `/=`等,用于将右侧的值与左侧的值进行运算后,再赋给左侧变量。 Java运算符的优先级决定了运算的...
15. **赋值运算=、+=、-=、*=、/=、%=**:赋值运算符用于给变量赋值,复合赋值运算符如+=、-=等会将右侧的值与左侧的变量进行相应运算后再赋值。 16. **位赋值运算&=、|=、<<=、>>=、>>>=**:这些运算符将赋值与按...
复合赋值运算符实际上是算术运算符和赋值运算符的结合。例如,`x += 1`等价于`x = x + 1`。 3. 关系运算符:包括大于(>)、小于(<)、等于(==)、不等于(!=)、大于等于(>=)、小于等于(<=)等。它们用于比较...