Tag: 三元运算符

三元运算符内的Java三元运算符,如何评估?

我想这是一个非常基本的问题,我只是想知道如何读取这段代码: return someboolean ? new someinstanceofsomething() : someotherboolean ? new otherinstance() : new third instance(); 我想我现在正在写它,我有点理解这句话。 如果为true,则返回选项1,但如果为false则返回另一个布尔检查并返回剩余的两个选项之一? 我将继续留下这个问题,因为我以前没见过,也许其他人也没有。 你可以在三元运算中无限期地继续三元运动吗? 编辑:为什么这个/这不是更好的代码而不是使用一堆if语句?

PHP中是否有像三元运算符的短版本的PHP?

在PHP中,三元运算符有一个简短的版本。 expr1 ? expr2 : expr3; 改变成 expr1 ? : expr3; short版本返回expr1的结果为true,expr3的结果为false。 这允许很酷的代码可以根据自己的当前状态填充变量。 例如: $employee = $employee ? : new Employee(); 如果$employee == null或由于任何其他原因求值为false,则上面的代码将创建一个new Employee(); 否则, $employee的值将被重新分配给自己。 我在Java中寻找类似的东西,但我找不到任何类似的三元运算符用例。 所以我想问是否有这样的function或类似的东西可以避免三元运算符的一个表达式,以减少重复。

Java中的“?”是什么意思?

我不知道java中的问号( ? )代表什么,我正在做一个小程序,一个Nim游戏。 正在寻找一本书,寻求帮助并看到这句话: int pinsToTake = (min >= 2) ? 2 : 1; 我不明白,会是什么? 代表,它可以与if语句有关但你把它放在变量中吗? 并且:可以是“其他”的东西? (我刚才说的这些事情可能会非常误导)

使用三元运算符和最终变量时出现意外输出

请考虑以下代码段: public static void main(String[] args) { int z1 = 0; final int z2 = 0; System.out.println(false ? z1 : ‘X’); System.out.println(false ? z2 : ‘X’); } 运行此代码时,我希望在您的控制台中看到两个X 但是,实际输出是: 88 X 如果我们看一下关于三元运算符的Java规范 ,我们发现了 如果其中一个操作数是T类型,其中T是byte,short或char,另一个操作数是int类型的常量表达式,其值可以在类型T中表示,那么条件表达式的类型是T. 因此第一个输出将’X’ X’char视为int ,这就是它打印88的原因。 但是,我不确定为什么使用final改变第二个输出的行为。

Java – 三元运算符奇怪的行为

我试图从一个double中删除fractional部分,以防它完全使用: (d % 1) == 0 ? d.intValue() : d 并遇到以下我不明白的行为: public static void main(String[] args) { Double d = 5D; System.out.println((d % 1) == 0); // true System.out.println((d % 1) == 0 ? d.intValue() : “not whole”); // 5 System.out.println((d % 1) == 0 ? d.intValue() : d); // 5.0 } 正如您在第三行中看到的那样,即使满足条件(d % 1) […]

三元运算符和意外的NullPointerException

我有时从下面的行得到NullPointerException 。 System.out.println(“Date::”+ row != null ? row.getLegMaturityDate() : “null”); 添加括号后,没关系。 System.out.println(“Date::”+ (row != null ? row.getLegMaturityDate() : “null”)); 请澄清我的行为。 提前致谢。

为什么Ternary运算符不在java中的方法参数内工作

我在开发过程中注意到了这一点。 为什么Ternary运算符不在方法参数内工作? 这里显然是InputStream或(else) String 。 class A{ public static boolean opAlpha(InputStream inputStream) { // Do something return true; } public static boolean opAlpha(String arg) { // Do something else return true; } public static void main(String[] args) throws Exception { boolean useIsr = true; InputStream inputStream = null; String arg = null; // boolean isTrue […]

为什么三元运算符不像带有边界通配符的generics类型?

以下类定义了两种方法,两种方法都直观地具有相同的function。 每个函数都使用两个List列表来调用List List和一个布尔值,指定应将哪些列表分配给局部变量。 import java.util.List; class Example { void chooseList1(boolean choice, List list1, List list2) { List list; if (choice) list = list1; else list = list2; } void chooseList2(boolean choice, List list1, List list2) { List list = choice ? list1 : list2; } } 根据javac 1.7.0_45 , chooseList1有效而chooseList2不有效。 它抱怨说: java: incompatible types required: […]

三元运算符,使用赋值时出现语法错误

下面的3行代码编译好了。 (请注意,此代码是“人工Java编码”的示例,因此在专业编写的代码中不会出现。) int x, y; boolean b=true; x = b ? y=1 : 2; // Compiles OK. 如果我现在更改上面第3行中的代码,使其看起来像下面的代码行,编译器会生成错误。 // Change the position of the “y assignment”, and now the code doesn’t compile. x = b ? 1 : y=2; 这是语法错误消息: 有人可以解释这种行为(对一个新手Java学习者)吗? 谢谢。

在Java中使用if与三元opertator时,“错误”返回类型

在下面的类中,两种方法的返回类型与三元运算符的思想不一致: return condition?a:b; 相当于 if(condition) { return a; } else{ return b; } 第一个返回一个Double,第二个返回Long: public class IfTest { public static Long longValue = 1l; public static Double doubleValue = null; public static void main(String[] args) { System.out.println(getWithIf().getClass());// outpus Long System.out.println(getWithQuestionMark().getClass());// outputs Double } public static Object getWithQuestionMark() { return doubleValue == null ? longValue : […]