这个名为Bool Bool=object.method()的语法是什么;Java中的0
我刚刚在我的室友代码中看到了这行代码这个名为Bool Bool=object.method()的语法是什么;Java中的0,java,conditional,boolean,Java,Conditional,Boolean,我刚刚在我的室友代码中看到了这行代码 Bool bool = method() > 0; 或 这将导致nameIsTony变为true 所以你可以有一个内联条件语句 这叫什么 Bool bool = method() > 0; 将表达式method()>0(布尔值)的结果分配给变量bool 当然,有时候这可能有点难理解——我更喜欢在这种情况下使用括号,比如 Bool bool = (method() > 0); 我想“内联逻辑表达式”是一个合适的名称。name==“Ton
Bool bool = method() > 0;
或
这将导致nameIsTony
变为true
所以你可以有一个内联条件语句
这叫什么
Bool bool = method() > 0;
将表达式method()>0
(布尔值)的结果分配给变量bool
当然,有时候这可能有点难理解——我更喜欢在这种情况下使用括号,比如
Bool bool = (method() > 0);
我想“内联逻辑表达式”是一个合适的名称。name==“Tony”
(或者更确切地说,应该是name.equals(“Tony”)
)是一个布尔表达式,所以我猜布尔表达式是最接近您所寻找的术语
它是一个表达式而不是一个语句-它的计算结果是某件事,而不是做某件事。它不是真正有条件的,因为它总是计算为布尔值——它的行为中没有条件,只有结果。所以我选择“布尔表达式”。“内联”并不是真的需要。它被称为“赋值”。它的全部内容
相等(=)的优先级高于赋值(=)
所以boolean nameIsTony=name==“Tony”代码>
first name==“Tony”表达式计算为true
而不是分配给nameIsTony
除了少数例外,表达式可以嵌套在其他表达式中。因此,每个都是布尔表达式:
true
false
x > 0
(x >= 0) && (x <= 5)
100 == 100
Integer.parseInt("100") == 100
true & (true) & ((true)) & (((true)))
看看语法
考虑Java语言规范的以下摘录:
局部变量声明语句声明一个或多个局部变量名称
LocalVariableDeclarationStatement:
LocalVariableDeclaration ;
LocalVariableDeclaration:
VariableModifiers Type VariableDeclarators
VariableDeclarators:
VariableDeclarator
VariableDeclarators , VariableDeclarator
VariableDeclarator:
VariableDeclaratorId
VariableDeclaratorId = VariableInitializer
VariableDeclaratorId:
Identifier
VariableDeclaratorId [ ]
VariableInitializer:
Expression
ArrayInitializer
这里我们看到局部变量声明语句允许对每个标识符进行可选的初始化。每个变量初始值设定项
在语法上要么是表达式
要么是数组初始化器
因此,asometypeanidentifier=sometexpression在此上下文中,code>只是一个带有初始值设定项的局部变量语句someExpression
在语法上可以是任何表达式
关于ArrayInitializer
ArrayInitializer
类似于{1,2,3}
和{4,5,6}
。请注意,ArrayInitializer
语法规则不是表达式的一部分。这就是为什么你可以这样做,比如说,int[]x={1,2,3}在带有初始值设定项的声明中,但不迟于x={4,5,6}代码>在赋值中。为了使此类赋值更简单、更清晰,包括Java在内的许多语言都提供了三元运算符(?:),其用法如下:
x = y = z; // use judiciously!
Employee emp = "manager".equals(profile) ? new Manager() : new Engineer();
所以,如果profile等于“manager”,那么Employee emp将设置为new manager(),否则将设置为new Engineer()
还请注意,我写的是“manager.equals(profile)”而不是profile.equals(“manager”),原因是,尽管两者都是正确的,但使用第一种方法是更好的做法,因为在第二种方法中,如果profile为null,您将得到一个NPE(null指针异常)(除非并且直到您真的想要报告一个NPE异常,事实上,即使在这种情况下,更好的方法是添加对profile not等于null的检查).顺便说一句:Bool
在Java中不是标准类型。你可能是指boolean
。谢谢,是的,我知道这对Java不正确,只是想快速理解这一点。我发现这实际上与处理许多其他类型的组合表达式一样,只是看起来它比事实上是这样!那么什么是非内联布尔表达式呢?我的意思是,我会说它只是一个表达式。如果我们看一下整个语句,那么它就是一个带有初始值设定项的变量声明。我不喜欢这种类型的表达式太过冗长。例如,If(isAvailable==true)doSomething();
。我认为布尔b=“Tony”.equals(name);
很好。@Vivart+1用于好的捕获!!!我真正的意思是针对这样的场景:Number obj=((x%2)==0)?new EvenNumber():new OddNumber()
我知道您在这里试图回答这个表达式是如何计算的,但同样重要的是要提到比较两个对象(或字符串对象与字符串文字的特殊方式,如本例所示)这可能是危险的,因为这将比较它们所引用的地址的值,而不是它们所引用的地址所持有的值;
LocalVariableDeclarationStatement:
LocalVariableDeclaration ;
LocalVariableDeclaration:
VariableModifiers Type VariableDeclarators
VariableDeclarators:
VariableDeclarator
VariableDeclarators , VariableDeclarator
VariableDeclarator:
VariableDeclaratorId
VariableDeclaratorId = VariableInitializer
VariableDeclaratorId:
Identifier
VariableDeclaratorId [ ]
VariableInitializer:
Expression
ArrayInitializer
Employee emp = "manager".equals(profile) ? new Manager() : new Engineer();