这个语法是什么叫Bool bool = object.method()> Java中的0

时间:2010-06-14 11:58:42

标签: java conditional boolean

我刚刚在室友代码中看到了这行代码。

Bool bool = method() > 0;

string name = "Tony";
boolean nameIsTony = name == "Tony";

这会导致nameIsTony成为true

所以你可以有一个内联条件语句吗?

这叫什么?

6 个答案:

答案 0 :(得分:6)

name == "Tony"(或者更确切地说是name.equals("Tony"))是一个布尔表达式,所以我猜测布尔表达式是与您要查找的内容最接近的术语。

这是一种表达而不是一种陈述 - 它评价某种东西,而不是做某事。它并不是真正有条件的,因为它总是评估一个布尔值 - 它的行为没有任何条件,只有它的结果。所以我会选择“布尔表达式”。 “内联”并不是必需的。

答案 1 :(得分:2)

全部关于Operator Precedence

相等(==)的优先级高于赋值(=)。

所以boolean nameIsTony = name == "Tony";

  1. 名字==“Tony”表达式评为真

  2. 并分配给nameIsTony。

答案 2 :(得分:1)

Bool bool = method() > 0;

将表达式method() > 0的结果 - boolean值 - 分配给变量bool

当然,有时候这可能有点难以阅读 - 我更喜欢在这种情况下使用括号,比如

Bool bool = (method() > 0);

我猜“内联逻辑表达式”是一个恰当的名称。

答案 3 :(得分:1)

只是为了使这样的任务更加简单和干净,包括Java在内的许多语言都提供了三元运算符(?:),它的使用方式如下:

Employee emp = "manager".equals(profile) ? new Manager() : new Engineer();

因此,如果profile等于“manager”,则Employee emp设置为new Manager(),否则设置为new Engineer()。

另请注意,我写了“经理”.equals(个人资料)而不是profile.equals(“经理”)的原因是即使他们两个都是正确的但使用第一种方式是更好的做法,因为在第二种方式你如果profile为null,则会得到一个NPE(空指针异常)(除非你真的想报告一个NPE异常,实际上,即使在那种情况下,beter方式也是添加对不等于null的profile的检查)。 p>

答案 4 :(得分:0)

这叫做“任务”。

答案 5 :(得分:0)

除了少数例外,表达式可以嵌套在其他表达式中。因此,每个都是布尔表达式:

true
false
x > 0
(x >= 0) && (x <= 5)
100 == 100
Integer.parseInt("100") == 100
true & (true) & ((true)) & (((true)))

关于地方变量声明,您可以使用任何表达式(只要它在语法和语义上都是正确的)。

所以在这样的事情上真的没什么特别的:

boolean b = (x >= 0) && (x <= 5); // nothing special

事实上,你也可以像这样嵌套作业:

x = y = z; // use judiciously!

查看语法

请考虑以下Java语言规范摘录:

  

JLS 14.4 Local Variable Declaration Statements

     

局部变量声明语句声明一个或多个局部变量名称。

LocalVariableDeclarationStatement:
        LocalVariableDeclaration ;

LocalVariableDeclaration:
        VariableModifiers Type VariableDeclarators

VariableDeclarators:
        VariableDeclarator
        VariableDeclarators , VariableDeclarator

VariableDeclarator:
        VariableDeclaratorId
        VariableDeclaratorId = VariableInitializer

VariableDeclaratorId:
        Identifier
        VariableDeclaratorId [ ]

VariableInitializer:
        Expression
        ArrayInitializer

这里我们看到局部变量声明语句允许为每个标识符进行可选的初始化。每个VariableInitializer在语法上都是ExpressionArrayInitializer

因此,此上下文中的someType anIdentifer = someExpression;只是带有初始值设定项的局部变量语句。 someExpression在语法上可以是任何表达。


关于ArrayInitializer

的说明

ArrayInitializer类似于{ 1, 2, 3 }{ 4, 5, 6 }。请注意,ArrayInitializer语法规则不是Expression制作的一部分。这就是为什么你可以在带有初始值设定项的声明中使用int[] x = { 1, 2, 3 };,但不能在作业中使用x = { 4, 5, 6 };