java笔记day_02

扶醉桌前 提交于 2020-02-04 23:24:03
 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 }

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!