相关疑难解决方法(0)

Java中评估顺序的规则是什么?

我正在阅读一些Java文本并获得以下代码:

int[] a = {4,4};
int b = 1;
a[b] = b = 0;
Run Code Online (Sandbox Code Playgroud)

在文中,作者没有给出明确的解释,最后一行的效果是: a[1] = 0;

我不太清楚我理解:评估是如何发生的?

java operator-precedence

83
推荐指数
3
解决办法
2万
查看次数

在Java中将long [64]转换为byte [512]?

我正在将进程移植到Java.已经有了C#和C++的工作版本.

我在C#中有一个部分,我使用Marshal.Copy(...)将64个字节转换为512个字节,并在C++中使用memmove(...)来执行相同的操作.Java中有哪些可以实现相同的结果?我需要相同顺序的二进制信息,就像字节而不是long一样.

编辑:

我移植到Java的原因是利用Java自然具有的可移植性.我不想使用本机代码.

另一件事.由于Java不包含无符号值,因此我需要稍微更改我正在请求的内容.我想从64个long(C#和C++中的ulongs)中的每一个获得8个无符号字节值,以便稍后我可以在数组中的索引处使用这些值.这需要发生数千次,因此最快的方式将是最好的方式.

java porting

16
推荐指数
1
解决办法
3158
查看次数

在java中强制转换的优先级是什么?

如果我有一行类似的代码

int s = (double) t/2   
Run Code Online (Sandbox Code Playgroud)

它是一样的吗?

int s = (double) (t/2)
Run Code Online (Sandbox Code Playgroud)

要么

int s = ((double) t)/2
Run Code Online (Sandbox Code Playgroud)

java casting

14
推荐指数
1
解决办法
7178
查看次数

JLS中f1()+ f2()* f3()表达式的执行顺序和运算符优先级

给定一个f1() + f2()*f3()带有3个方法调用的表达式,java首先计算加法运算(的操作数):

int result = f1() + f2()*f3();

f1 working
f2 working
f3 working
Run Code Online (Sandbox Code Playgroud)

我(错误地)期望f2()首先被呼叫,然后被呼叫f3(),最后被呼叫f1()。因为乘法应在加法之前求值。

所以,我在这里不了解JLS-我想念什么?

15.7.3。评估尊重括号和优先权

Java编程语言遵守 由括号显式表示由运算符优先级隐式表示的评估顺序

在此示例中,如何精确地遵守运算符优先级?

JLS在15.7.5中提到了一些例外其他表达式(方法调用表达式(§15.12.4),方法引用表达式(§15.13.3))的评估顺序,但是我不能将这些异常中的任何一个应用于我的示例。

我知道JLS保证二进制运算的操作数从左到右求值。但是在我的示例中,为了了解方法调用顺序,有必要了解首先考虑哪个操作(及其两个操作数!)。我在这里错了-为什么?

更多示例:

int result = f1() + f2()*f3() + f4() + f5()*f6() + (f7()+f8());
Run Code Online (Sandbox Code Playgroud)

自豪地生产:

f1 working
f2 working
f3 working
f4 working …
Run Code Online (Sandbox Code Playgroud)

java evaluation expression-evaluation operator-precedence jls

10
推荐指数
2
解决办法
297
查看次数

给定if条件如何在java中给出true

我无法理解为什么跟随if块执行.如何评估if条件?

public class Test
{
    public static void main(String[] args)
    {
        if (true || (false ||  true) && false)
        {
            System.out.println("How does this condition becomes true.");
        }

        if (false && (false ||  true) || true)
        {
            System.out.println("Same with this condition, why is it true.");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java conditional if-statement

9
推荐指数
2
解决办法
179
查看次数

三元运算符和意外的NullPointerException

NullPointerException有时会从下面的线上得到.

System.out.println("Date::"+ row != null ? row.getLegMaturityDate() : "null");
Run Code Online (Sandbox Code Playgroud)

添加括号后,它很好.

System.out.println("Date::"+ (row != null ? row.getLegMaturityDate() : "null"));
Run Code Online (Sandbox Code Playgroud)

请澄清我的行为.提前致谢.

java ternary-operator

6
推荐指数
1
解决办法
737
查看次数

Java中的运算符优先级

http://leepoint.net/notes-java/data/expressions/precedence.html的一个例子中

以下表达式

1 + 2 - 3 * 4 / 5
Run Code Online (Sandbox Code Playgroud)

被评估为

1 + 2 - 3 * 4 / 5
    = (1 + 2) - ((3 * 4) / 5)
    = 3 - (12/5)
    = 3 - 2 The result of the integer division, 12/5, is 2 .
    = 1
Run Code Online (Sandbox Code Playgroud)

然后我从http://www.roseindia.net/java/master-java/operator-precedence.shtml中看到了另一个例子

以下表达式

4 + 5 * 6 / 3
Run Code Online (Sandbox Code Playgroud)

被评估为

4 + (5 * (6 / 3))
Run Code Online (Sandbox Code Playgroud)

我有点困惑的是如何确定哪些将在*和/涉及时首先进行评估.在上面的例子中,两者似乎都不同.

第一个例子是评估3*5/5,((3*4)/5) 而第二个例子是评估5*6/3 as …

java scjp operators

5
推荐指数
1
解决办法
4815
查看次数

AND优先于OR吗?

快问.在Java中,AND优先于OR吗?例如,这段代码是如何解释的?

if(statement1 && statement2 || statement3)
Run Code Online (Sandbox Code Playgroud)

这是一样的吗?

if(statement1 && (statement2 || statement3))
Run Code Online (Sandbox Code Playgroud)

要么

if((statement1 && statement2) || statement3)
Run Code Online (Sandbox Code Playgroud)

提前致谢.

java

1
推荐指数
2
解决办法
4226
查看次数