啊哈哈哈哈哈~刚打完三国杀,好爽,于是有看了一下视频。

    有关于类型的转换,有两种:自动和硬肛(强制)。

    1.自动类型转换

        容量小的数据类型可以自动转为容量大的数据类型。

            e.g int i = 3;

                double d = i;

                float f = i;

                double d2 = f; //直接换 不用什么硬肛的姿势。

        

        可以直接将int常量直接赋值给byte,short,char等类型变量,而不需要强制类型转                不超出其表数范围JAVA基础自学笔记整理(二  )某些数据类型的姿势_自学

            e.g byte(-128~~127)

                char(0~~65535)


                int i = 200;

                byte c = i; 

                错!!!!!  

                

                int i = 126;

                byte c = i;

                对!!!!!  


                byte b = 123;

                byte b2 = 300;// 错!!!!! 

                char c = -3;//错!!!!!负数!超范围了     


                char c2 = 'a';

                int i = c2;//(直接)

                long do1 = 123213;//(直接)

                float f = do1;//可能丢失精度

                

                容量大小是表示范围的大小,与字节无关


        2.硬肛类型转换,这么羞羞的姿势点,我还是在例子中说明把。

            e.g int i2 = 100;

                char c3 = (char)i2;

                System.out.println(c3);

                //输出结果为字符d


                可是当超过强制转换一个类型的表述范围时,转化成完全不同的无意义的值

            e.g int i2 = -100;

                char c3 = (char)i2;

                System.out.println(c3);

                //输出结果为字符不认识的


            e.g //表达式中类型提升问题

                int a = 3;

                long b = 4;

                int c = (int)(a+b);//做所有的二元运算符(+-*/%)都会有类型提升的问题                                           比如如果写成 int c = a+b;会报错损失精度。

                float f = (float)(a+b);


            常见错误:

            int money = 10亿;//太多0  劳资就只写中文了

               int years = 20;

               int all = money * years;

               System.out.println(all);//负,因为超出范围了


               面对这种情况,就要用类型提升来补锅了。

               比如: long all = (long)money * years;

                         注意,这里提升的只有一个int money整型,如果 (long)(money*years)

                         同样为负,因为两个int相乘的结果早已超范围了。



            所以!!!遇到多数字运算时使结果溢出的情况时,只需提升其中一个元素即刻。

            e.g long time = 70L * 60 * 24 * 365 * 70;

                System.out.println(time);


嗯好累,我又去玩了