背景
Java这个类型转换不好记忆,写个笔记加深记忆
double、float互转
double转float
Object a = 1.0;
float b = (Float) a;
System.out.println(b);
报错 > java.lang.Double cannot be cast to java.lang.Float
假如有这样一个场景,调用接口返回内容是:
{
"name":"lucy",
"price":1.1
}
通过String转map,获取price的值得通过map.get(“price”)这种方式;于是想通过强转为float
(float)map.get(price);
这样也报错 > java.lang.Double cannot be cast to java.lang.Float , 可以看出java默认小数点数字的对象为Double类型。
这样转才是正确的:
Object a = 1.1;
float b = ((Double) a).floatValue();
double a = 1.1;
float b = ((Double)a).floatValue();
Double a = 1.1;
float b = a.floatValue();
float转double
由Float强转
Object a = 1.1f;
double b = ((Float) a).doubleValue();
可以理解为double类型的数值是包含(大于)float数据类型,可以强转;
float c = (float) 2.2;
double d = c;
float e = 3.3f;
double f = e;
double/int互转
double 转 int
int a = (int) 100.0;
int 转 double
不需要转,直接将int赋值给double即可
Array/List互转
Array 转 List
参考Alibaba开发手册:
【
强制
】使用工具类 Arrays.asList()把数组转换成集合时,不能使用其修改集合相关的方法, 它的 add/remove/clear 方法会抛出 UnsupportedOperationException 异常。
String[] str = new String[] { "chen", "yang", "hao" };
List list = Arrays.asList(str);
List 转 Array
参考Alibaba开发手册
【
强制
】使用集合转数组的方法,必须使用集合的 toArray(T[] array),传入的是类型完全一 致、长度为0
的空数组。
List<String> list = new ArrayList<>();
list.add("hello");
list.add("world");
list.toArray(new String[0]);