public class TypeChange{
/*
5这个整数,byte,short,int,long都能够存储这个整数;
基本原则:小转大,自动转;大转小,强制转;
类型检查是在编译期,类型检查不影响转换的结果(类型检查只是为了检查)
编译器优化:
1.int类型的字面值在byte,short和char(0到65535)的数据范围内的时候,可以自动转换
2.字面值得char类型数据,在byte范围内可以自动转换成整数类型
其他:
1.浮点类型转换为整型需要强制转换,并且省略掉小数部分
2.整型转换为浮点类型,自动转
3.类型转换必须是兼容的类型才能转换;比如boolean类型不能跟其他类型作转换
运算符与类型转换:
基本的原则:
1.当参与计算的两个类型相同,结果就为该类型.
2.当参与计算的两个类型一个范围大,一个范围小,那么结果为范围较大的类型
特殊的情况:
1.当范围小于int的整型参与运算的时候,都会先自动转换为int类型再参与运算
2.当浮点类型与整型参与运算的时候,结果为浮点类型
3.当字符类型与整型参与运算结果为整型
拓展:
当整型精度损失的时候,将会出现什么情况
*/
public static void main(String[] args){
byte by = 50;
int i = by;
i = 100;
short sh = (short)i;
System.out.println("i="+i);
System.out.println("sh="+sh);
//byte by1 = 100;
//char ch = 65536;超出范围
System.out.println(Character.MAX_VALUE+0);
System.out.println(Character.MIN_VALUE+0);
by = 'a';
i = 'b';
System.out.println("by="+by);
System.out.println('我'+0);
double dou = 5.0;
i = (int)dou;
i = 5;
dou = i;
float flo = i;
System.out.println("i="+i);
System.out.println("dou="+dou);
System.out.println("flo="+flo);
boolean boo = true;
//i = (int)boo;
//运算符与类型
//by = 500 + 5;
by = 5;
byte by1 = 5;
sh = 6;
long lo = 5;
long by2 = lo + by1;
System.out.println("by2="+by2);
dou = 5.5;
i = 5;
double dou1 = dou + i;
System.out.println("dou="+dou);
i = 6/5;
System.out.println("i="+i);
char ch = 'a';
//by = lo + ch;
System.out.println("i="+i);
//浮点类型运算的时候,最好转换为整型原酸
dou = 6.6;
dou1 = 2.2;
System.out.println("dou+dou1="+(dou+dou1));
System.out.println("dou-dou1="+(dou-dou1));
System.out.println("dou*dou1="+(dou*dou1));
System.out.println("dou/dou1="+(dou/dou1));
//例子,减法运算
dou = ((int)(dou*10)-(int)(dou1*10))/10.0;
System.out.println("dou="+dou);
//整型精度损失
by = (byte)130;
System.out.println("by="+by);
}
}
想要查看更多内容,请访问:http://how2j.cn?p=7870