public class demo1227 { public static void main(String[] args) { int i =128; byte b=(byte) i;//给byte赋值,内存溢出,byte取值在-128~127 //强制转换(类型)变量名,有高到低,本质上是把int的i类型由取值范围广的类型转换成了byte System.out.println(i); System.out.println(b); byte a=22; int c=a; System.out.println(a); System.out.println(c); //自动转换由低到高 /* 注意点:1.布尔类型不能转换 2.无关类型不能转换 3.大容量转换到小容量需要强制转换,转换过程容易出现内存溢出 4.转换容易出现精度问题 */ System.out.println("======================"); System.out.println((int)23.3); System.out.println((int)49.89F); //精度问题 char d='z'; int e=d+1; System.out.println("=================="); System.out.println(d); System.out.println(e); //字符的本质就是unicode里面所对应的数字 System.out.println((char)e);//输出的是一个大括号,所以得出结论表中z后面就是符号{ int f=e+2; System.out.println((char)f); /*{和}两个符号之间还有一个符号| z:123 {:124 }:126 */ } }
还需要再比较一下容量大小
由低到高,byte short char int long float double
运算中不同的数据类型先转化为同一类型