类型转换
低--------------------------------------------------------------->高
byte, short, char—> int—> long—> float—> double
在运算中,不同类型的数据要转换为同一类型,然后进行运算.
高到低,必须强制转换
低到高,自动进行转换
1. 不能对布尔值进行转换;
2. 不能把对象类型转换为不相干的类型;
3. 把高容量转换到低容量的时候,强制转换;
4. 转换的时候可能存在内存溢出,或者精度问题;
public class Demo06 {
public static void main(String[] args) {
int i = 128;
byte b = (byte)i; //最大值127,现在赋值128,内存溢出,输出结果达不到目的,所以要避免溢出
//强制转换 高到低时 格式:(类型)变量名;
//低到高时,不需要强制转换,可以自动转换;
System.out.println(i);
System.out.println(b);
int i2 = 128;
double b2 = (double)i2;
System.out.println(i2);
System.out.println(b2); //此时输出结果为128
/*
1. 不能对布尔值进行转换;
2. 不能把对象类型转换为不相干的类型;
3. 把高容量转换到低容量的时候,强制转换;
4. 转换的时候可能存在内存溢出,或者精度问题;
*/
System.out.println("1======================================");
System.out.println((int)-23.8); //输出结果为-23;因此要注意精度问题
System.out.println((int)2.23f); //输出结果为2;因此要注意精度问题
char c = 'a'; //赋值变量c
int b3 = c + 1; //赋值变量b3
System.out.println(b3); //输出b3
System.out.println((char)b3); //强制转换b3为char,输出
System.out.println("2=================================");
int money = 1000000000;
int years = 20;
int total = money*years;
System.out.println(total); //输出结果为-1474836480,不是想要的结果,原因为计算的时候溢出了;
System.out.println("3=================================");
//使用long输出,结果会怎样?
long total2 = money*years;
System.out.println(total2); //输出结果仍然是-1474836480,原因:虽然转换了,但是在转换之前已经出现问题了。
System.out.println("4=================================");
//先把一个数字转换为long,结果会怎样?
long total3 = money*((long)years);
System.out.println(total3); //输出结果是20000000000,达到目的
System.out.println("5=================================");
//把两个都转换为long,结果会怎样?
long total6 = ((long)money*((long)years));
System.out.println(total6); //输出结果是输出结果是20000000000,达到目的
System.out.println("6=================================");
//赋值long的时候要注意大小写,虽然结果一样,但常用大写,避免错看成1;
long total4 = 343434343433434L;
long total5 = 32323242545381l;
System.out.println(total4);
System.out.println(total5);
}
}
版权声明:本文为Medzy原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。