int i1 = 2.0;// 不通过编译,整数默认int,小数默认double,无法从高精度自动转换为低精度
double d1 = 2.0;// 通过编译,小数默认double
float f1 = 2;// 通过编译,整数默认为int类型,此处自动转换为精度更高的float
float f2 = 2.0;// 不通过编译,精度不准确,小数默认为double类型,无法从高精度自动转换为低精度
float f3 = (float) 2.0;// 通过编译,强制从高精度转为低精度(数据将可能失真)
float f4 = 2.0f;// 通过编译,用f/F标记数字为float类型
float f5 = 2.0F;// 通过编译,用f/F标记数字为float类型
float f6 = 2L;// 通过编译,用l/L标记数字为long类型(常用L避免l跟1混淆),long自动向高精度的float转换
long L1 = 2.0L;// 不通过编译,无法从高精度自动转换为低精度
long L2 = (long) 2.0;// 通过编译,强制从高精度转为低精度(数据将可能失真)
long L3 = (long) 2.0;// 通过编译,double强制转换long
long L4 = 2.0L;// 不通过编译,无法自动转换