/*自动转换类型(隐式)
* 数据类型不一样时,会发生数据类型转换
* 1. 特点:代码不需要特殊处理,自动转换
* 2.规则:数据范围从小到大
*/
1 public class DemoDataType { 2 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 System.out.println(1024); // 这是一个整数,默认 int 类型 6 System.out.println(3.14); // 这是一个浮点数,默认 double 类型 7 8 9 10 //左边是long类型,右边默认int类型 11 // int -->long 符合数据范围从小到大 12 //这一行代码发生了自动类型转换 13 long num1 = 100; 14 System.out.println(num1);// 100 15 16 17 //左边是double类型,右边是float类型 18 //float-->double 符合数据范围从小到大 19 //发生自动类型转换 20 double num2 = 3.14F; 21 System.out.println(num2);//3.14 22 23 24 //左边float类型,右边long类型 25 //long-->float 符合数据范围从小到大 26 //发生自动类型转换 27 float num3 = 30L; 28 System.out.println(num3);//30 29 30 } 31 32 }
/*强制类型转换
* 1.特点:代码需要进行特殊的格式处理,不能自动完成
* 2.格式:范围小的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据
*
* 注意事项:强制转换一般不推荐使用,可能发生精度损失,数据溢出
*/
1 //左边是int类型,右边是long类型 2 //long-->int,数据类型不是从小到大 3 //不能发生自动类型转换 4 //范围小的类型 范围小的变量名 = (范围小的类型) 原本范围大的数据 5 int num4 = (int) 100L; 6 System.out.println(num4);//100 7 8 9 10 //long强制转换成int类型 11 int num5 = (int) 6000000000L; 12 System.out.println(num5);//1705032704 6000000000的大小超过了int的最大范围,打印输出至int能表示的最大值 13 14 //float强制转换成int类型 15 int num6 = (int) 4.99F; 16 System.out.println(num6);//4 浮点数表示的4.99强制转换成int后,小数位精度丢失,不会发生四舍五入 17 18 19 char zifu1 = 'A';//这是一个字符型变量,是大写字母A 20 System.out.println(zifu1 + 1);//66 A在ASCII码表中代表65 21 //一旦char类型进行了数学运算,那么字符会按照一定的规则翻译成一个数字 22 23 byte n1 = 40; 24 byte n2 = 50;//右侧范围不能超过左侧 25 26 int result1 = n1 + n2; 27 System.out.println(result1);//90 28 29 short n3 = 60;//int转换成short要保证逻辑上的真实大小没有超过short范围,不然数据会溢出 30 short result2 = (short) (n1 + n3); 31 int result3 = n2 + n3; 32 System.out.println(result2);//100 33 System.out.println(result3);//110