1. 程式人生 > >Java語言基礎(回頭復習)

Java語言基礎(回頭復習)

double類型 最終 blog 默認 不能 ole byte 出錯 技術

技術分享

技術分享

技術分享

/*
    使用變量的時候要註意的問題:
        A:作用域
            變量定義在哪個大括號內,它就在這個大括號內有效。
            並且,在同一個大括號內不能同時定義同名的變量。
            
        B:初始化值
            沒有初始化值的變量不能直接使用。
            你只要在使用前給值就行,不一定非要在定義的時候立即給值。
            推薦在定義的時候給值。
            
            定義變量的格式:
                a:數據類型 變量名 = 初始化值;
                b:數據類型 變量名;
                  變量名 = 初始化值;
        
        C:在一行上建議只定義一個變量
            可以定義多個,但是不建議
*/ public class Text2 { public static void main(String[] args) { //定義變量 int x = 100; //錯誤,不能有同名的 //int x = 200; //定義變量必須給值 //int y; //System.out.println(y); int z; z = 100; System.out.println(z);
//在一行上定義多個變量 //int a = 10; int b = 20; int c = 30; //上面的寫法可以,但是不建議。 int a = 10; int b = 20; int c = 30; //int d, e; //d = 40; //e = 50; //int f,int g; //錯誤 //int h; int i; //正確 } }
/*
    +是一個運算符(我們等會講解)。做加法運算的。
    
    一般來說,我們在運算的時候,要求參與運算的數據類型必須一致。
    
    註意:
        boolean類型不能轉換為其他的數據類型

    默認轉換(從小到大的轉換)
        A:byte,short,char—int—long—float—double
        B:byte,short,char相互之間不轉換,他們參與運算首先轉換為int類型
*/ public class Text { public static void main(String[] args) { //直接輸出的方式做加法 //System.out.println(3 + 4); //兩個int類型做加法 int x = 3; int y = 4; int z = x + y; System.out.println(z); //定義一個byte類型,一個int類型,做加法,他們參與運算首先轉換為int類型 byte a = 3; int b = 4; System.out.println(a + b); //可能損失精度 //byte c = a + b;,因為 b 為int整數型,從int到byte精度可能會降低,所以此處出錯 int c = a + b; System.out.println(c); } }
/*
    強制轉換:
        從大的數據類型到小的數據類型。
        
        格式:
            目標數據類型 變量 = (目標數據類型) (被轉換的數據);
            
        註意:
            不要隨意的去使用強制轉換,因為它隱含了精度損失問題。
*/
public class Text {
    public static void main(String[] args) {
        byte a = 3;
        int b = 4;
        
        //int c = a + b;這個肯定沒有問題

        //byte c = a + b; 這個是有問題的
        
        //用強制類型轉換改進
        byte c = (byte) (a + b);
        System.out.println(c);
    }
}
/*
    思考題1:請問下面這個有沒有問題
        double d = 12.345;
        float f = d;
        
    思考題2:看看下面兩個定義有沒有區別呢?
        float f1 = (float)12.345;
        float f2 = 12.345f;

        
    解析:f1其實是通過一個double類型轉換過來的。
        而f2本身就是一個float類型。
*/
public class Text {
    public static void main(String[] args) {
        //把double賦值給float,加了強制類型轉換
        double d = 12.345;
        float f = (float)d;
    }
}
/*
    面試題:
        byte b1=3,b2=4,b;
        b=b1+b2;
        b=3+4;
        哪句是編譯失敗的呢?為什麽呢?
        解析:b = b1 + b2;  這個是有問題的。
        因為變量相加,會首先看類型問題,最終把結果賦值的也會考慮類型問題。
        常量相加,首先做加法,然後看結果是否在賦值的數據類型範圍內,如果不是,才報錯。
*/
public class Text {
    public static void main(String[] args) {
        //定義了三個byte類型的變量,b1,b2,b
        //b1的值是3,b2的值是4,b沒有值
        byte b1 = 3,b2 = 4,b;
        
        //b = b1 + b2; //這個是類型提升,所有有問題
        
        b = 3 + 4; //常量,先把結果計算出來,然後看是否在byte的範圍內,如果在就不報錯。
    }
}
/*
    byte b = 130;有沒有問題?如果我想讓賦值正確,可以怎麽做?結果是多少呢?
    
    練習:byte b = (byte)300;
*/
public class Text {
    public static void main(String[] args) {
        //因為byte的範圍是:-128到127。
        //而130不在此範圍內,所以報錯。
        //byte b = 130; 
        
        //我們可以使用強制類型轉換
        byte b = (byte) 130;
        
        //結果是多少呢?
        System.out.println(b);
    }
}
/*
    分析過程:
        我們要想知道結果是什麽,就應該知道是如何進行計算的。
        而我們又知道計算機中數據的運算都是補碼進行的。
        而要得到補碼,首先要計算出數據的二進制。
        
        A:獲取130這個數據的二進制。
            00000000 00000000 00000000 10000010
            這是130的原碼,也是反碼,還是補碼。
        B:做截取操作,截成byte類型的了。
            10000010 
            這個結果是補碼。
        C:已知補碼求原碼。
                    符號位        數值位
            補碼:    1            0000010
            
            反碼:    1            0000001
            
            原碼:    1            1111110
*/

技術分享

/*
    看程序寫結果
    
    通過字符和一個整數相加,我們要知道ASCII碼表。
        通過看完這張表以後,我們要記住三個值:
            ‘a‘        97
            ‘A‘        65
            ‘0‘        48
*/
public class Text {
    public static void main(String[] args) {
        //直接輸出一個字符
        System.out.println(‘a‘); //輸出結果為  a
        //輸出一個字符和一個整數做加法
        System.out.println(‘a‘+1); //輸出結果為 98
    }
}

Java語言基礎(回頭復習)