直到今天,我还以为:
i += j;
Run Code Online (Sandbox Code Playgroud)
只是一个捷径:
i = i + j;
Run Code Online (Sandbox Code Playgroud)
但是如果我们试试这个:
int i = 5;
long j = 8;
Run Code Online (Sandbox Code Playgroud)
然后i = i + j;将不会编译但i += j;将编译正常.
这是否意味着事实上i += j;是这样的捷径
i = (type of i) (i + j)?
java casting operators variable-assignment assignment-operator
在Java中,允许以下内容:
char c = 'A' + 1;
Run Code Online (Sandbox Code Playgroud)
这里,c将保持值'B'.在上面,首先评估表达式.所以'A'被转换为65,整个表达式的计算结果为66,然后66被转换为'B',因为我们将值存储在char中.
但是,以下内容会产生编译时错误:
char c = 'A';
c = c + 1;
Run Code Online (Sandbox Code Playgroud)
Java如何以不同方式查看表达式的解释是什么?顺便说一句,以下工作也很好:
char c = 'A';
c++;
Run Code Online (Sandbox Code Playgroud) Nicolai M. Josuttis的C++标准库声明:
两者之间存在细微差别
X x;
Y y(x) //explicit conversion
Run Code Online (Sandbox Code Playgroud)
和
X x;
Y y = x; //implicit conversion
Run Code Online (Sandbox Code Playgroud)
接下来说:"前者通过使用类型X的显式转换创建Y类型的新对象,而后者通过使用隐式转换创建类型为Y的新对象."
我猜对于显式与隐式转换的概念我有点困惑.在这两种情况下,你都使用X并将其推入Y本身 - 一个使用Y的构造函数,一个使用赋值运算符.
在这两种情况下如何处理转换有什么不同,是什么使它显式/隐式,以及如何使用"显式"关键字定义类构造函数(如果有的话)?
可能重复:
隐式VS显式转换
"隐式转换"和"显式转换"之间有什么区别?Java和C++的区别是什么?