java是否有像javascript一样的默认值返回?
我想知道java是否有一个“默认值分配”(我真的不知道如何调用它),就像您在javascript或python中可以做的那样 例如,在js中,您可以执行以下操作:java是否有像javascript一样的默认值返回?,java,Java,我想知道java是否有一个“默认值分配”(我真的不知道如何调用它),就像您在javascript或python中可以做的那样 例如,在js中,您可以执行以下操作: var myVar = variable || "default value"; 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 "go
var myVar = variable || "default value";
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"
如果变量包含一个值,myVar将具有变量的值,否则myVar将是字符串“默认值”
在python中,您还可以执行以下操作:
var myVar = variable || "default value";
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”操作时如何调用它。
谢谢Java中没有类似的表达式(除了三元运算符,您已经描述过了) 在某些脚本语言(如JS、Python和Lua)中,
和
和或
操作将返回考虑的最后一个值(对于或
的第一个真值或最后一个假值,对于和
的第一个假值或最后一个真值),而不是布尔值,这就是为什么var myvar=param|“默认值”
技巧有效
然而,在Java中,
&&
和|
运算符只对布尔值起作用,因此上述行为不适用。因为Java比JavaScript或Python更静态类型化,恐怕不行。考虑到这个示例:
myVar = variable || "default value";
为了在Java中执行此操作,变量
和默认值
必须是布尔值
s,因为它们在a.中使用,并且结果(myVar
)也将是布尔值
由于Java中的类型必须更加静态显式,因此需要定义完整的比较表达式:
myVar = (variable != null) ? variable : "default value";
在这种情况下,布尔表达式是正在检查的条件,变量
和默认值
需要是相同的类型。这也将是myVar
的结果类型
在JavaScript(以及我使用过的任何动态类型系统)中,几乎任何东西都可以作为布尔值进行检查。(任何东西都可以是“truthy”。)在Java或C#等静态类型语言中,情况通常不是这样。不,Java中没有方法返回类型的默认值 在普通的旧Java中,您可以编写如下内容:
if (value != null) {
return value;
else {
return "default";
}
或者你可以简化为
return value != null ? value : "default";
在Java8中,可以使用Optional
。这意味着,您可以保存值,也可以不保存值。这将如下所示:
Optional<String> optionalVal = Optional.ofNullable(null); // or Optional.of("Foo");
return optionalVal.getOrElse("default");
optionalVal=Optional.ofNullable(null);//或Optional.of(“Foo”);
返回optionalVal.getOrElse(“默认值”);
此技巧在Javascript和Python中有效的原因是|
可以应用于非布尔型,并根据其参数返回其中一个参数
在Java中,|
只能应用于布尔值,这意味着这个技巧不起作用
String a = b != null ? b : "default value";
这是以下内容的简写:
if(b != null) a = b;
else a = "default value";
您在问题中发布的示例代码是在Java中执行此操作的方法。为清晰起见,我建议添加括号,使其显示为
stringA=((b!=null)?b:“默认值”)
Java不会检查像Javascript这样的变量的真实性。相关:在C#中,您可以使用?
来完成这项工作。请参阅:@Tichodroma尝试了什么?尝试了使用其他所有编程语言的默认值的语法?“您尝试过了吗?”这是对那些问“当我做X时会发生什么”的人的一个很好的回答?,但对于“Java是否具有类似于编程语言Y中的功能X的功能”来说,它的效果不太好。您的python示例实际上会导致一个异常,因为与javascript不同,引用不存在的c
变量不会导致null
/None
。