相关疑难解决方法(0)

Java赋值运算符执行

在Java中,我理解赋值求值为右操作数的值,所以像x == (y = x)evaluate 这样的语句true.

但是,此代码输出false.

public static void main(String[]args){
    String x = "hello";
    String y = "goodbye";
    System.out.println(x.equals(x = y));
}
Run Code Online (Sandbox Code Playgroud)

为什么是这样?在我的理解中,它首先评估(x = y),分配xy,然后返回值y.然后x.equals(y)是评估,这应该是true因为xy现在应该共享相同的引用,而是,我得到false.

显示源的屏幕截图以及输出为

这里发生了什么?

java string equals assignment-operator

74
推荐指数
4
解决办法
3423
查看次数

Java中参数的执行顺序保证?

给出以下函数调用C:

fooFunc( barFunc(), bazFunc() );
Run Code Online (Sandbox Code Playgroud)

执行的顺序barFuncBazFunc未指定,因此barFunc()可以在in 之前bazFunc()bazFunc()之前调用.barFunc()C

Java指定函数参数表达式执行顺序或喜欢的C是不确定?

java specifications operator-precedence jls

63
推荐指数
1
解决办法
1万
查看次数