java中的int返回类型

java中的int返回类型,java,int,return,Java,Int,Return,下面是我感到困惑的代码段。方法的返回类型是int,因此该方法不能返回null。但是,当我取消注释第一个返回语句和注释第二个返回语句时,该方法不会显示任何错误,甚至不会显示警告。 我不知道这背后的原因是什么。我使用的是java版本7 protected int calculateLogicalPageRangeForTitles(String logicalpage) throws Exception { //return StringUtils.isNumeric(logicalpa

下面是我感到困惑的代码段。方法的返回类型是int,因此该方法不能返回null。但是,当我取消注释第一个返回语句和注释第二个返回语句时,该方法不会显示任何错误,甚至不会显示警告。 我不知道这背后的原因是什么。我使用的是java版本7

 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…很抱歉我弄错了代码段。我已经编辑了。我应用了