1 /* 2 当数据类型不一样时,将会发生数据类型转换。 3 4 自动类型转换(隐式) 5 1.特点:代码不需要进行特殊处理,自动完成。 6 2.规则:数据范围从小到大。(与字节数是不一定相关的) 7 8 强制类型转换(显示) 9 1.特点:代码需要进行特殊的格式处理,不能自动完成。 10 2.格式:范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的数据; 11 12 注意事项: 13 1.强制类型转换一般不推荐使用,因为有可能发生精度损失、数据溢出 14 2.byte/short/char这三种类型都可以发生数学运算,例如加法“+”。 15 3.byte/short/char这三种类型在运算的时候,都会被首先提升为int类型,然后在计算。 16 4.boolean类型不能发生数据类型转换 17 18 数字和字符的对照关系表(编码表): 19 ASCII码表:American Standard Code for Information Interchange,美国信息交换标准代码 20 Unicode码表:万国码。也是数字和字符的对照关系,开头0-127部分和ASCII完全一样,但是从128开始包含有更多字符 21 22 48 - ‘0’ 23 65 - ‘A’ 24 97 - ‘a’ 25 */ 26 public class Demo01DataType{ 27 public static void main(String[] args){ 28 System.out.println(1024);//这是一个整数,默认为int类型 29 System.out.println(3.14);//这是一个浮点数,默认为double类型 30 31 //左边是long类型,右边是默认的int类型,左右不一样 32 //一个等号代表赋值,将右侧的int常量,交给左侧的long变量进行存储 33 //int --> long ,符合数据范围从小到大的要求 34 //这一行代码发生了自动类型转换 35 long num1 = 100; 36 //long num1 = 100L; 37 System.out.println(num1);//100 38 39 //左边是double类型,右边是float类型,左右不一样 40 //float --> double ,符合从小到大的规则 41 //也发生了自动类型转换 42 double num2 = 2.5F; 43 System.out.println(num2);//2.5 44 45 //左边是float类型,右边是long类型,左右不一样 46 //long --> float ,范围float更大一些,符合从小到大的规则 47 //也发生了自动类型转换 48 float num3 = 30L; 49 System.out.println(num2);//30.0 50 51 //左边是int类型,右边是long类型,左右不一样 52 //long --> int ,不是从小到大,不能发生自动转换! 53 //格式:范围小的类型 范围小的变量名 = (范围小的类型)原本范围大的数据; 54 int num = (int)100L; 55 System.out.println(num);//100 56 57 //long强制转换成int型 58 int num4 = (int)6000000000L; 59 System.out.println(num4);//1705032704,此时发生了数据溢出 60 61 //double-->int,强制类型转换 62 int num5 = (int)3.99; 63 System.out.println(num5);//这并不是四舍五入,所有的小数位都会被舍弃掉 64 65 char zifu1 = 'A';//这是一个字符型变量,里面是大写字母A 66 System.out.println(zifu1 + 1);//66,也就是大写字母A被当做65进行处理 67 //计算机的底层会用一个数字(二进制)来代表字符A,就是65 68 //一旦char类型进行了数学运算,那么字符就会按照一定的规则翻译成为一个数字 69 70 byte num6 = 60;//注意:右侧的数值大小不能超过左侧的类型范围 71 byte num7 = 70; 72 //byte + byte --> int + int --> int 73 int result1 = num6 + num7; 74 //byte result1 = num6 + num7;会出现错误 75 //因为byte/short/char这三种类型在运算的时候,都会被首先提升为int类型,然后在计算 76 System.out.println(result1);//90 77 78 short num8 = 80; 79 //byte + short --> int + int --> int 80 //int强制转换为short:注意必须保证逻辑上真实大小本来就没有超过short范围,否则会发生数据溢出 81 short result2 = (short)(num6+num8); 82 System.out.println(result1); 83 } 84 85 }
来源:https://www.cnblogs.com/kosshuan/p/12261918.html