初学java 之 类型转化 笔记
public class Hello { public static void main(String[] args) { //基本类型的大小走势 byte→short→int→long→float→double。 //基本常识 int a = 1; int b = a+1;// 这里的 默认整数 1 是 int 类型 ,默认的小数 1.5 是 double 类型 System.out.println(b); // 转换 分为 强制转换 和 自动转换 // 先看 自动转换(由小到大) //规则 1 byte short int char 四种类型 发生计算,都是把结果提升成 int 型! //例如 定义一个byte型,如果 相加 用的是 short 型接收 那么就报错! byte b1 = 2; //short b2 =b1+2;// 这里就会报错! 由于提升到int 型了 ,这里用 short 接收 就报错! int b2 = b1+2; System.out.println(b2); //规则2 定义一个 char char 和 int 可以自动转化 char c1 = 'a'; int c2 = c1+1; System.out.println(c2);//输出的结果是98 为什么会是98 呢,因为 char类型 的字母和 数字有一种对应关系, ASCII 表,在表中,a对应的就是97 //如果两个 int 类型的 计算 ,会不会由于超出范围,提升 类型呢?? int i1 = 2147483647;//设置了int的最大值 int i2 = 12; int i3 = i1+i2; System.out.println(i3);// 得到的结果是 -2147483637 一个 负值!!没有类型的提升 //规则3 int long float double 这四个类型。相加! //如果 两者类型相同 没有类型提升这一说!如果超出范围,会有精度的损失!实际中要注意~~~ //如果 两者类型不同 得到的结果,会向着大的类型提升,比如 // float f1 = 1.6f; //int f2 = f1+12;//这里会报错的,因为 一个float 一个 int 两者相加 提升到大的类型 ,那么必须用float 类型接受 float f2 = f1+12;//上面用int接受 ,报错,这里必须是float的 System.out.println(f2);//结果 13.6 double d1 = f1+1.2;//这里 小数 默认是 double 型 System.out.println(d1); //问 下面的写法对不对?? double d2 = 12.5f; //答:这是可以的 12.5f 标识float类型的常量,小的表数的常量 或者变量 可以向着 大的范围类型转化,例如 下边的两个例子 double d3 = 1; double d4 = i2; System.out.println(d3);//结果是 1.0 System.out.println(d4);//结果是 12.0 //介绍了小的向大的转化 ----是 自动转换 ,那么 大的向小的 转换 就是 强制转化 了 //强制转换----大容量类型 向着小容量类型转化!! //转换前提 精度不损失 //int z转 byte int xx = 127; byte bb = (byte)xx; System.out.println(bb);//127 // long 转 int long l = 1000; int l1 = (int)l; System.out.println(l1);//1000 //小数类型的强转 float f5 = 125.5f; int f6 = (int)f5;//转成int 小数转成整数,就是把小数部分去掉!! System.out.println(f6);//125 //double 转float double dd1 = 12.54; float dd2 = (float)dd1; System.out.println(dd2);//12.54 //字符的转化 int y1 = 98; char y2 = (char)y1; System.out.println(y2); //b //特别注意 :布尔类型 是不转化的 } }
6666