java中的int返回类型
下面是我感到困惑的代码段。方法的返回类型是int,因此该方法不能返回null。但是,当我取消注释第一个返回语句和注释第二个返回语句时,该方法不会显示任何错误,甚至不会显示警告。 我不知道这背后的原因是什么。我使用的是java版本7java中的int返回类型,java,int,return,Java,Int,Return,下面是我感到困惑的代码段。方法的返回类型是int,因此该方法不能返回null。但是,当我取消注释第一个返回语句和注释第二个返回语句时,该方法不会显示任何错误,甚至不会显示警告。 我不知道这背后的原因是什么。我使用的是java版本7 protected int calculateLogicalPageRangeForTitles(String logicalpage) throws Exception { //return StringUtils.isNumeric(logicalpa
protected int calculateLogicalPageRangeForTitles(String logicalpage) throws Exception {
//return StringUtils.isNumeric(logicalpage) ? Integer.parseInt(logicalpage) : null;
return null;
}
此语句仅返回一个
int
parseInt
返回一个int
,0
是一个int
return StringUtils.isNumeric(logicalPage) ? Integer.parseInt(logicalPage) : 0;
此语句仅返回一个
int
parseInt
返回一个int
,0
是一个int
return StringUtils.isNumeric(logicalPage) ? Integer.parseInt(logicalPage) : 0;
这是因为返回一个int(基元类型),它与方法的签名相匹配
另一方面,null
与基元int不兼容,这就是出现错误的原因。这是因为返回一个与方法签名匹配的int(基元类型)
另一方面,
null
与基元int不兼容,这就是您出错的原因。因为您的第一条语句将始终返回int
。因此,它进行了编译
但是第二条语句返回
null
,它属于Object
类型。如果返回类型为Integer
而不是int
,则会编译此语句,因为您的第一条语句将始终返回int
。因此,它进行了编译
return StringUtils.isNumeric(logicalPage) ? Integer.parseInt(logicalPage) : 0;
但是第二条语句返回
null
,它属于Object
类型。如果您的返回类型是Integer
而不是int
第一个return
语句,则将编译此语句
return StringUtils.isNumeric(logicalPage) ? Integer.parseInt(logicalPage) : 0;
return StringUtils.isNumeric(logicalPage) ? Integer.parseInt(logicalPage) : 0;
始终返回int
值(或异常)。该方法还返回一个原语int
值。因此,不会显示错误或警告
然而,第二项声明
return null;
尝试为基元返回类型
int
返回一个null
值,该值无效,因此会导致编译器错误 第一个返回语句
return StringUtils.isNumeric(logicalPage) ? Integer.parseInt(logicalPage) : 0;
始终返回int
值(或异常)。该方法还返回一个原语int
值。因此,不会显示错误或警告
然而,第二项声明
return null;
尝试为基元返回类型int
返回一个null
值,该值无效,因此会导致编译器错误 int是一个原语。。。因此,它必须有一个值。null是一个值,告诉我们(对类的)引用不引用任何实例。int是一个原语。。。因此,它必须有一个值。null是一个值,告诉我们(对类的)引用不引用任何实例。您的第一行也无效。如果结果为false并尝试返回null
值,则会引发异常
如果将代码写出一个冗长的If语句,它将给出错误。比如:
if (StringUtils.isNumeric(logicalpage){
return Integer.parseInt(logicalpage);
}else{
return null;
}
您的第一行也无效。如果结果为false并尝试返回null
值,则会引发异常
如果将代码写出一个冗长的If语句,它将给出错误。比如:
if (StringUtils.isNumeric(logicalpage){
return Integer.parseInt(logicalpage);
}else{
return null;
}
该代码是合法的,并且是可编译的
请参见Java规范:
如果第二个和第三个操作数之一为null类型,并且
另一个的类型是引用类型,然后是
条件表达式就是该引用类型
这意味着?:的结果将是一个整数,它将被取消绑定为int。此取消绑定将引发NullPointerException。代码是合法的,可以编译
请参见Java规范:
如果第二个和第三个操作数之一为null类型,并且
另一个的类型是引用类型,然后是
条件表达式就是该引用类型
这意味着?:的结果将是一个整数,它将被取消绑定为int。此取消绑定将引发NullPointerException。没有在此处编译,原因有二:没有为logicalpage指定类型,返回类型不兼容。您的方法无法编译(logicalpage
没有类型,以后使用logicalpage
-大写字母P)。但是,当您取消注释第一行时,返回的是Integer.parseInt(logicalpage)
或0
都是有效的或返回有效的int
s…很抱歉我弄错了代码段。我已经编辑了。我没有在这里编译Applogize,原因有二:没有为logicalpage指定类型,返回类型不兼容。您的方法无法编译(logicalpage
没有类型,以后您使用logicalpage
-大写P)。但是当您取消对第一行的注释时,返回的是Integer。parseInt(logicalpage)
或0
都是有效的,或者返回有效的int
s…很抱歉我弄错了代码段。我已经编辑了。我应用了