[color=Red]基础数据类型的自动转换:类型由低级向高级分别为(byte,short,char)---int--long--float--duble[/color][code=java]package heima.answer;
public class Test1 {
public static void main(String[] args) {
int max = Integer.MAX_VALUE;
int min = Integer.MIN_VALUE;
System.out.println("int max="+max);
System.out.println("int min="+min);
//输出结果:
//int max=2147483647
//int min=-2147483648
long lg = max+10;
long lg2 = min-10;
System.out.println("lg="+lg);
System.out.println("lg2="+lg2);
//输出结果:
//lg=-2147483647
//lg2=2147483646
//long lg3 = 2147483649;//值2147483649超出了int的范围,需显式的声明为long类型,在数据2147483649后夹l或者大写的L。
long lg3 =2147483649L; // 显式的声明2147483649是long数据类型
long lg4 = 2147483649L+2;
System.out.println(lg3);//输出2147483649
System.out.println(lg4);//输出2147483651
/*
* lg 与lg2 的值为何与我们想的答案不一样?因为当int运算的结果超出它的范围时,结果大于max就变负数,结果小于min就变正数,
* 总结起来就是在结果前加了个"-"再继续运算,最后的结果很难解释。
*/
//关于float 类型,最好也显式的声明,在数据的后面加上f或者F。
//一个小数的默认类型是double,如1.1是double类型的
float f1 = 1; //int类型的1自动向上转为float。
//float f2 = 1.1; //报错,因为更高级的double不能自动转换为float
float f2 = (float) 1.222; //强制转换
float f3 = 1L; //1L自动由long数据类型转换为float
long long1 = (long) f1;
double d1 = f1;
double d2 = f2;
double d3 = 1.222;
System.out.println("f1="+f1); //f1=1.0
System.out.println("f2="+f2); //f2=1.222 精度不变
System.out.println("f3="+f3); //f3=1.0
System.out.println(long1); //1
System.out.println("d1="+d1);
System.out.println("d2="+d2);//由float类型转换而来的double值,结果变化大,精度提高了。
System.out.println("d3="+d3);//d3=1.222 ,没经过转换的double,输入没变化。
//d1=1.0
//d2=1.100000023841858 -----------double这种数据类型转换起来比较麻烦,所以实际上用的不多。
//d3=1.222
/*
* 基础数据类型的自动转换:类型由低级向高级分别为(byte,short,char)---int--long--float--duble
* float占用4个字节,和int是一样,也就是32bit.double占用8个字节,64bit。
*/
}
}[/code] |