如果没有其他三元运算符

Z.V*_*Z.V 49 java if-statement ternary-operator

到目前为止,我一直在搜索网络,声明总是有if和else条件如a ? b : c.我想知道是否if可以不使用三元语句else.假设我有以下代码,我希望关闭PreparedStatement它,如果它不是null

(我使用的是Java编程语言.)

PreparedStatement pstmt;

//.... 

(pstmt!=null) ? pstmt.close : <do nothing>;
Run Code Online (Sandbox Code Playgroud)

fra*_*zzi 48

不,你做不到. 而是试试这个:

if(bool1 && bool2) voidFunc1();
Run Code Online (Sandbox Code Playgroud)


cig*_*5.5 14

为什么只有一个选择时使用三元运算符?

if (pstmt != null) pstmt.close(); 
Run Code Online (Sandbox Code Playgroud)

足够!


Jer*_*vel 13

写出来吧?

if(pstmt != null) pstmt.close();
Run Code Online (Sandbox Code Playgroud)

这是完全相同的长度.


Yeg*_*xim 12

三元if运算符是特定的三元运算符.其中的一种.

来自维基:

在数学中,三元运算是n-ary运算,n = 3.

这意味着你需要所有3个操作数.


Kre*_*ase 11

如其他答案中所述,您不能使用三元运算符来执行此操作.

然而,如果需要打你,你可以使用Java 8 可选和lambda表达式把这种逻辑到单个语句:

Optional.of(pstmt).ifPresent((p) -> p.close())
Run Code Online (Sandbox Code Playgroud)


Dav*_*son 8

三元运算被称为三元运算,因为它需要3个参数,如果需要2,则它是二进制运算.

如上所述,它是一个返回值的表达式.

如果省略else,则会有一个未定义的情况,表达式不会返回值.

因此,在其他答案中也会提到,您应该使用if 语句.