1. 程式人生 > 實用技巧 >JAVA的學習日記3

JAVA的學習日記3

Java基礎型別拓展

public class Demo03 {
    public static void main(String[] args) {
        //基礎資料型別拓展
        //整型    二進位制ob     十進位制     八進位制0     十六進位制0x
        int i = 10;
        int i1 = 010;   //八進位制
        int i2 = 0x10;  //十六機制

        System.out.println(i);  //10
        System.out.println(i1); //8
        System.out.println(i2); //16

        System.out.println("======================");
        //浮點數拓展
        float f = 0.1f;     //0.1
        double d = 1.0/10; //0.1
        System.out.println(f == d);     //false
        System.out.println(f);          //0.1
        System.out.println(d);          //0.1

        float f1 = 21231212121212f;
        float f2 = f1 + 1;
        System.out.println(f1 == f2);   //true

        /*所以說浮點數是存在缺陷的,浮點數是:有限的、離散的、是有舍入誤差的,表示的是一個大約數,接近但不等於*/
        /*所以最好完全避免使用浮點數進行比較*/
        /*所以最好完全避免使用浮點數進行比較*/
        /*所以最好完全避免使用浮點數進行比較*/

        //所以後面比較的時候會用到BigDecimal  是一個數學工具類



        //字元拓展

        char c1 = 'a';
        char c2 = '中';

        System.out.println(c1);
        System.out.println((int)c1);    //強制轉換  97

        System.out.println(c2);
        System.out.println((int)c2);    //強制轉換  20013
        //所有的字元本質還是數字
        //編碼 Unicode--->表:(A=65   a=97)  佔據2個位元組  最多可以表示65536個字元
        //表示範圍U0000-UFFFF

        char c3 = '\u0061';
        System.out.println(c3);     //a


        //轉義字元
        //\t 製表符    \n換行
        System.out.println("Hello\tWorld");     //Hello	World
        System.out.println("Hello\nWorld");
        /*Hello
        World*/

        String s1 = new String("Hello World");
        String s2 = new String("Hello World");
        System.out.println(s1 == s2);       //false

        String s3 = "Hello World";
        String s4 = "Hello World";
        System.out.println(s3 == s4);       //true
        //物件  從記憶體上分析


        //布林值拓展
        boolean flag = true;
        if(flag){}
        //上下兩行的表示意思相同,後面的大多時候都會使用上面的方法
        if(flag==true){}
    }
}


轉義字元表

Java型別轉換

  • 由於Java是強型別語言,所以要進行有些運算的時候,需要用到型別轉換

  • 運算中,不同型別的資料先轉化為同一型別,然後在進行運算

  • 強制型別轉換

  • 自動型別轉換

public class Demo04 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte)i;

        System.out.println(i);      //128
        System.out.println(b);      //-128
        /*很明顯第二個結果輸出的不符合預期,這是因為byte型別的資料範圍是-128~127,
        因為型別強制轉換,導致了記憶體溢位所以在操作的時候要儘量避免*/

        // 強制轉換格式:  (型別)變數名     低---高
        // 自動轉換:    不需要任何操作     高---低
        /*
        * 注意點:
        *   1.不能對布林值進行轉換
        *   2.不能把物件型別轉換為不相干的型別
        *   3.在把高容量轉換到低容量打的時候,強制轉換
        *   4.轉換的時候可能存在記憶體溢位或者精度問題【浮點數】!
        * */

        System.out.println((int)23.7);       //23
        System.out.println((int)-12.5f);      //-12

        char c = 'a';
        int d = c + 1;
        System.out.println(d);              //98
        System.out.println((char)d);        //b


    }
}

大數操作的時候應該注意的問題

public class Demo05 {
    public static void main(String[] args) {
        //操作比較大的數的時候,注意溢位問題
        //JDK7新特性,數字之間可以使用下劃線分割,並且輸出的時候不會輸出下劃線
        int money = 10_0000_0000;
        int years = 20;
        int total = money * years;  //-1474836480  說明計算的時候溢位了
        long total2 = money * years; //-1474836480  表示預設是Int,轉換之前就已經存在問題了
        long total3 = money * (long)years; //20000000000 先把一個數轉換為long,就能符合強型別轉換了
        System.out.println(total3);

    }
}

加油!!!