我发现了这个语法:
System.out.println(boolean_variable ? "print true": "print false");
它是一个三元运算符,这意味着它不像许多其他运算符那样有两个操作数,而是有三个。关于三元运算及其在Java中的使用的维基百科。归根结底就是:对布尔运算(或只是一个变量)进行求值。如果其计算结果为true,则运算符返回值/执行:
之前的代码,否则执行后面的代码。
这是条件运算符,通常称为三元运算符,因为它有3个操作数:例如:
int foo = 10;
int bar = foo > 5 ? 1 : 2; // will be 1
int baz = foo > 15 ? 3 : 4; // will be 4
因此,如果布尔
表达式的计算结果为true
,它将返回第一个值(冒号之前),否则返回第二个值(冒号之后)。
你可以在Java语言规范,第15.25章条件操作符<代码>?
<代码>?:是条件运算符。(不仅仅是< code>:部分——整个方法参数都是示例中条件运算符的一种用法。)
它通常被称为三元运算符,但这只是其性质的一个方面 - 具有三个操作数 - 而不是它的名称。如果Java中引入了另一个三元运算符,该术语将变得模棱两可。它之所以称为条件运算符,是因为它有一个条件(第一个操作数),然后确定计算其他两个操作数中的哪一个。
计算第一个操作数,然后根据第一个操作数是真还是假来评估第二个或第三个操作数...这最终是操作员的结果。
所以像这样:
int x = condition() ? result1() : result2();
大致相当于:
int x;
if (condition()) {
x = result1();
} else {
x = result2();
}
重要的是,它不计算其他操作数。例如,这很好:
String text = getSomeStringReferenceWhichMightBeNull();
int usefulCharacters = text == null ? 0 : text.length();
问题内容: 我遇到了这种语法: 这个带有两个点的语法是什么? 在哪里可以找到有关它的信息? 它仅适用于布尔值还是以其他不同方式实现? 问题答案: 是条件运算符。(不只是一部分,整个方法参数是示例中条件运算符的一种用法。) 它通常被称为三元运算符,但这只是其本质的一个方面-具有三个操作数- 而不是其名称。如果在Java中引入了另一个三元运算符,则该术语将变得模棱两可。之所以称为条件运算符,是因为它有
问题内容: 哪种列类型最适合在MySQL数据库中使用布尔值?我用,但我的同事用。 问题答案: 这些数据类型是同义词。
到目前为止我们看到的类型都能表示很大范围的数据,整数多的是,而浮点数更多。相对而言,字符集的规模小的多。C++中还有一个类型表示的范围更小,即布尔类型,它只能表示true和false两个值。 虽然没提到过该类型,但我们前面几章中实际已经使用过布尔值了。if语句和while语句中的条件就是布尔表达式。比较操作符的结果也是布尔值。例如: if (x == 5) { // 进行某些处理 } ==操
原文: http://exploringjs.com/impatient-js/ch_booleans.html 基本类型 _ 布尔 _ 包含两个值 - false和true: > typeof false 'boolean' > typeof true 'boolean' 14.1。转换为布尔值 这三种方法可以将任意值x转换为布尔值。 Boolean(x) 最具描述性;推荐的。 x ?
问题内容: 我根据另一个问题编写了一个非常简单的代码,它是: 丢给我一个错误 java.lang.NullPointerException第5和17行 我不知道我在做什么错。 问题答案: 无法自动拆箱为原始值,当您尝试与进行比较时会发生这种情况。在 类型为,因此左侧操作数也必须为。您正在传入,这是一个对象,但可以自动拆箱到。 因此,这相当于 显然,如果是,则以上抛出。 为了避免自动拆箱的隐藏陷阱,
我公开了一个使用另一个SOAP服务的服务。我得到了JAXB生成的服务模型。当我使用服务时,数据被设置到与此模型相关的对象中。我定义了自己的域模型,它与JAXB模型具有完全相同的类集,但没有xml注释等。我使用dozer来执行数据映射。当标记为注释(nillable=true)的某些布尔元素为null时,我的域模型中的目标对象布尔对象将设置为默认的true或false值。我希望它保留相同的空值。布尔