Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java是否有像javascript一样的默认值返回?_Java - Fatal编程技术网

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

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

我想知道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 "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