1.八种基本数据类型当中除布尔类型之外剩余的7中数据类型之间都可以相互转换
2.小容量转大容量称为自动类型转换,容量从小到大排序: byte<short char <int<long <float<double
3.大容量转小容量,叫做强制类型转换,需要加强制类型转换符,程序才能编译通过,运行阶段可能会损失精度.
4当字面值没有超过byte,short,char的取值范围,可以直接赋值给byte,short,char类型变量
5,byte,short,char混合运算的时候先各自转成int类型再做运算.
6.多种数据类型混合运算,先换成最大的那种类型再做运算.
public class Basicdatatypeconversion{
public static void main(String[] agrs){
//错误因为300已经超出byte取值范围
byte a = 300;
//30在byte取值范围
byte b = 30;
//错误变量重名,
short b = 1000;
//正确1000并没有超出short取值范围
short c =1000;
//正确9000并没有超出long取值范围,
long e=9000;
//错误e是long类型 k是int类型 大类型转小类型需要加强制类型转换,
int k=e;
//正确,将long类型强制转换为int类型
int k=(int)e;
//正确在这里z,10,3都是int类型,所以结果也是int类型
int z = 10/3;(注意这里的10/3不是3.3333.....)
//错误这里的o是long类型 w是int类型 需要加强制转换
long o = 10;
int w = o/3;
//正确 将o强制转换为int类型在运算o/3结果还是int类型
int w = (int)o/3;
//o是long类型
long f = o/3;
//错误将long类型o先转换为int类型在转换为byte类型 byte类型o除以int类型3 那么它的运行结//果是int类型 int类型转byte类型就会出现精度损失问题(javac只负责语法检查 jvm负责运算 )
byte k = (byte)(int)o/3;
//把(o/3)整体强制转换为byte类型 去结果也是byte类型
byte p = (byte)(int)(o/3);
short i = 19;
byte m = 8;
//运行报错shoet和byte进行运算的时候先转换为int类型所以其结果为int类型 int类型转换为 short类型会损失精度编译报错
short h = i + m;
正确
short h = (short)(i+m);
//short 和 byte先转换为int类型 因为变量g也是int类型所以可以直接赋值
int g = i+m;
输出结果为b的ascii的值
char x = 'b';
输出结果为198 获取b的ascii的值后再加100;
int f = 'b' + 100;
duble t = 10/3;// 3.0
doble u = 10.0/3 //3.333333333333
}