在实现求取某个double数组最大值时,发现使用double作为方法返回值类型时不能返回“null"。
// 需求:编写类A01,定义方法max,实现求某个double数组的最大值,并返回
public class project{
public static void main(String [] args){
A01 a01 = new A01();
double[] arr = {1,2};
Double res = a01.max(arr);
if(res != null){
System.out.println("arr的最大值=" + res);
}else{
System.out.println("arr的输入有误");
}
}
}
class A01{
public double max(double[] arr){if(arr != null && arr.length >0){
double max=arr[0];
for(int i =1; i < arr.length ;i++){if (max < arr[i] ){
max = arr[i];
}
}
return max;
}else {
return null;
}
}
}
以下是编译结果:
project.java:32: 错误: 不兼容的类型: <空值>无法转换为double
return null;
究其原因,double是基本数据类型,而基本数据类型不能赋null值; Double是包装类型,包装类型与基本数据类型的区别之一是:初始值不同,比如:int的初始值为0、boolean的初始值为false,而包装类型的初始值为null。
将double改为Double后程序成功编译运行
// 需求:编写类A01,定义方法max,实现求某个double数组的最大值,并返回
public class project{
public static void main(String [] args){
A01 a01 = new A01();
double[] arr = {1,2};
Double res = a01.max(arr);
if(res != null){
System.out.println("arr的最大值=" + res);
}else{
System.out.println("arr的输入有误");
}
}
}
class A01{
public double max(double[] arr){if(arr != null && arr.length >0){
double max=arr[0];
for(int i =1; i < arr.length ;i++){if (max < arr[i] ){
max = arr[i];
}
}
return max;
}else {
return null;
}
}
}
编译结果:
arr的最大值=2.0