作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在学习隐式和显式类型转换时,我尝试了以下代码:
class Implicit
{
public static void main(String args[])
{
byte a=10;
byte b=20;
a=a+b; //
System.out.println(a);
}
}
编译器报告:
我尝试了这段代码,看看一元运算符或此类示例中的任何其他操作是否会导致右侧的数据类型发生变化。
这是这里发生的事情吗?若有,原因何在?还有哪些情况会导致数据类型发生改变?
最佳答案
编译器警告你因为 byte+byte = int
因此,它警告你何时尝试添加两个字节(添加后本质上是一个 int)并将其分配给一个字节,这将导致精度损失,因为 byte 只能容纳 8 位,而 int 可以容纳 32 位。
但是,当您使用 compound assignment operator 时,这不会给您警告。 .
a+=b; //
关于Java(隐式类型转换): Does a unary operator affect the data type of the variables in operation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16102587/
我是一名优秀的程序员,十分优秀!