kns*_*shn 55 java operators shorthand
我在接受采访时遇到了这个问题,无法提出解决方案.我知道反之亦然,如"+ ="运算符在Java中的作用所示?
所以问题如下.
..... x = .....;
..... y = .....;
x += y; //compile error
x = x + y; //works properly
Run Code Online (Sandbox Code Playgroud)
Cra*_*igy 55
试试这个代码
Object x = 1;
String y = "";
x += y; //compile error
x = x + y; //works properly
Run Code Online (Sandbox Code Playgroud)
不完全确定为什么会这样,但编译器说
对于参数类型Object,String,运算符+ =未定义
我假设对于第二行,toString在Object上调用.
编辑:
它是有道理的,因为+=操作符在一般对象上没有意义.在我的示例中,我将一个int转换为一个Object,但它只取决于xObject类型:
Object x = new Object();
Run Code Online (Sandbox Code Playgroud)
它只有在x是Object 时才有效,所以我实际上认为String更像是Object的直接子类.这将失败x + y:
Foo x = new Foo();
Run Code Online (Sandbox Code Playgroud)
对于我尝试过的其他类型.