当前位置: 首页 > 面试题库 >

什么是Java?:运算符,它有什么作用?

华萧迟
2023-03-14
问题内容

我已经使用Java几年了,但是直到最近我还没有遇到过这种构造:

int count = isHere ? getHereCount(index) : getAwayCount(index);

这可能是一个非常简单的问题,但是有人可以解释吗?我该如何阅读?我很确定我知道它是如何工作的。

  • 如果isHere为真,getHereCount()则称为
  • 如果isHere为假,getAwayCount()则调用。

正确?这个结构叫做什么?


问题答案:

是的,它是

int count;
if (isHere)
    count = getHereCount(index);
else
    count = getAwayCount(index);

它称为条件运算符。许多人(错误地)将其称为三元运算符,因为它是Java,C,C ++以及其他许多语言中唯一的三元运算符。但是理论上可以有另一个三元运算符,而只能有一个条件运算符。

官方名称在Java语言规范中给出:

§15.25条件运算符 :

条件运算符? :使用一个表达式的布尔值来确定应评估另外两个表达式中的哪一个。

请注意,两个分支都必须导致带有返回值的方法

第二个或第三个操作数表达式是void方法的调用是编译时错误。

实际上,根据表达式语句的语法(第14.8节),条件表达式不允许出现在可能出现调用void方法的任何上下文中。

因此,如果doSomething()doSomethingElse()是无效方法,则无法压缩此方法:

if (someBool)
    doSomething();
else
    doSomethingElse();

到这个:

someBool ? doSomething() : doSomethingElse();

简单的话:

booleanCondition ? executeThisPartIfBooleanConditionIsTrue : executeThisPartIfBooleanConditionIsFalse 


 类似资料:
  • 问题内容: 我最近遇到了以下代码: 这是什么,某种反向双λ? 问题答案: 没有操作员。第一个只是Java 8中引入的lambda语法,第二个是误导性的“小于” 和“一元减”的串联。 您可以将其读取为,即它会测试是否小于,所有(很好,大多数)负数就是这种情况,因此命名为。 仅出于完整性考虑:此测试不仅(有意地?)难以理解,而且-如评论中所指出- 也因(而)失败。相反,您可能应该只使用简单得多的。

  • 本文向大家介绍什么是React.forwardRef?它有什么作用?相关面试题,主要包含被问及什么是React.forwardRef?它有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 React.forwardRef 会创建一个React组件,这个组件能够将其接受的 ref 属性转发到其组件树下的另一个组件中。这种技术并不常见,但在以下两种场景中特别有用: 转发 refs 到 DOM 组件

  • 本文向大家介绍什么是zoom?它有什么作用?相关面试题,主要包含被问及什么是zoom?它有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 zoom是缩放比例,可以将元素进行缩放。 和css3中的transform:scale() 作用类似. 两者区别在于缩放的参照点不一样,zoom针对元素左上角,scale针对元素正中心

  • 问题内容: 精油 这到底是什么! 编辑:如果可以的话,请您写一两行并说明其工作原理? 问题答案: 试试这个简单的程序,命名为 并尝试执行 注意什么是argv。

  • 问题内容: PHP 中的and 运算符是什么? 例如: 问题答案: 这是 条件运算符 。 表示“如果为真,则使用;否则为”。 它也有一个简短的形式。 表示“如果为真,则使用;否则为”。 人们会告诉您这是“三元运算符”。错了 是 一个 三元运算符,这意味着它有三个操作数。人们常常以为它的名字叫“三元运算符”,因为它通常是给定语言唯一的三元运算符。

  • 本文向大家介绍vue-loader是什么?它有什么作用?相关面试题,主要包含被问及vue-loader是什么?它有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 Vue Loader 是一个 webpack 的 loader,它允许你以一种名为单文件组件 (SFCs)的格式撰写 Vue 组件。 https://vue-loader.vuejs.org/zh/#vue-loader-%E6%9