今天是学习Java基础的第三天,发现了一个小问题,就是Double和double是能相互赋值和转换的,对于之前没有接触过Java的我来说,碰到这种类与基本数据类型能相互赋值的问题是感到不可思议的,我查阅了相关文档,然后了解到,在jdk1.5以后都可进行相互转换,因为Double内部帮我们实现了自动装箱(Double -> double)和自动拆箱(Double -> double)的功能,因此我们可以直接使用Double来接受double的数据.
我们并似乎想不到其会应用到哪些场景,那么我们就来引入下面的小例子,这是一个面向对象方法练习题:求double数组中的最大值,其实我们没必要想下面这样写,但是考虑到在实际开发中程序的健壮性,我们就可以利用到Double.
其实也就是利用Double能为null的特性增强程序的健壮性.
public class Main {
public static void main(String[] args) {
double[] num = {1.2, 2.3, 5.6, -7.8, 9.7};
Deal d = new Deal();
Double res = d.getmax(num);
if(Double != null) System.out.println(res);
else System.out.println("传入的数组不能为空!");
}
}
class Deal {
public Double getmax(double[] num) {
if(num == null) return null; // 数组是引用类型,可以传入null
int len = num.length;
if(len < 1) return null;
double max = num[0];
for(int i = 1; i < len; i++) {
if(num[i] > max) max = num[i];
}
return max;
}
}
其实不只是Double,任何基本类型与其对于的类都可相互赋值.
如float与Float:
public class Main {
public static void main(String[] args) {
float num = (float)1.23; // 1.23默认为double类型
Float res = num;
System.out.println(res);
}
}