我想知道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”操作时如何调用它。 感谢
答案 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)中,and
和or
操作将返回考虑的最后一个值(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";