JAVA基礎自學筆記整理(二 )某些數據類型的姿勢

    啊哈哈哈哈哈~剛打完三國殺,好爽,於是有看了一下視頻。

    有關於類型的轉換,有兩種:自動和硬肛(強制)。

    1.自動類型轉換

        容量小的數據類型可以自動轉爲容量大的數據類型。

            e.g int i = 3;

                double d = i;

                float f = i;

                double d2 = f; //直接換 不用什麼硬肛的姿勢。

        

        可以直接將int常量直接賦值給byte,short,char等類型變量,而不需要強制類型轉                不超出其表數範圍wKioL1cJ5YfDkIANAADMZUMJ_FE295.png

            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);


嗯好累,我又去玩了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章