java是否有像javascript一样的默认值返回?

时间:2014-10-15 17:05:35

标签: java

我想知道java是否有“默认值赋值”(我真的不知道如何调用它),就像你在javascript或python中可以做的那样。

例如在js中你可以这样做:

var myVar = variable || "default value";

如果变量包含值,myVar将具有变量的值,否则myVar将是字符串“default value”。

同样在python中你可以这样做:

a = "hello" 
b = a or "good bye" 
print b #this will print "hello" 
a = None
b = a or "good bye" 
print b #this will print "good bye"

你能在java中做类似的事吗?通常当我必须在Java中执行此操作时,我会执行以下操作:

String a = b != null ? b : "default value";

但我认为你可以在js或python中做些什么,它更具可读性。你能告诉我这个名字是什么吗?我知道 || 符号是运算符,但在执行此“defaultvalue”操作时如何调用它。 感谢

5 个答案:

答案 0 :(得分:5)

由于Java比JavaScript或Python更静态类型,我不敢。考虑这个例子:

myVar = variable || "default value";

为了在Java中执行此操作,variable"default value"必须为Boolean,因为它们在{{3}中使用}}。 结果myVar)也是Boolean

由于类型必须在Java中更加静态显式,因此需要定义完整的比较表达式:

myVar = (variable != null) ? variable : "default value";

在这种情况下,布尔表达式是要检查的条件,variable"default value"必须属于同一类型。这也是myVar的结果类型。

在JavaScript(以及我使用的任何动态类型系统)中,几乎任何都可以作为布尔值进行检查。 (任何事情都可能是"真实的"。)然而,在Java或C#这样的静态类型语言中,通常情况并非如此。

答案 1 :(得分:3)

不,Java中的方法返回类型没有默认值。

在普通的旧Java中,你会写一些类似的东西:

if (value != null) {
  return value;
else {
  return "default";
}

或者您可以将其简化为

return value != null ? value : "default";

在Java8中,可以使用Optional<T>。这意味着,您可以保留一个值。这看起来像这样:

Optional<String> optionalVal = Optional.ofNullable(null); // or Optional.of("Foo");
return optionalVal.getOrElse("default");

答案 2 :(得分:1)

Java中没有类似的表达式(除了你已经描述过的三元运算符)。

在某些脚本语言(如JS,Python和Lua)中,andor操作将返回考虑的最后一个值(or的第一个真值或最后一个假值,并且and)的第一个假值或最后一个真值,而不是布尔值,这就是var myvar = param || "default"技巧有效的原因。

但是在Java中,&&||运算符只能使用布尔值,因此上述行为不适用。

答案 3 :(得分:1)

这个技巧在Javascript和Python中起作用的原因是||可以应用于非布尔值并根据其truthiness返回其中一个参数。

在Java中,||只能应用于布尔值,这意味着该技巧不起作用。

答案 4 :(得分:0)

String a = b != null ? b : "default value";

这是:

的简写
if(b != null) a = b;
else a = "default value";