NO.A.0005——day02——數據類型轉換、運算符

1、數據類型轉換
一、自動類型轉換(隱式)Demo01DataType.javajava

/*
當數據類型不同時,將會發生數據類型轉換,
自動類型轉換(隱式)
    一、特色:代碼不須要進行特殊處理,自動完成。
    二、規則:數據範圍從小到大。
*/

public class Demon01DayaType{
    public static viod main(String[] args){
        System.out.println(1024);// 這是一個整數,默認是int類型
        System.out.println(3.14);// 這是一個浮點數,默認就是double類型

        // 左邊是long類型,右邊是默認的int類型,左右不同,
        //一個等號表明賦值,將右側的int常量,交給左側的long變量進行存儲
        //int --> long,符合了數據範圍從小到大的要求。
        //這一行代碼發生了自動類型轉換。
        long num1 = 100L;//沒有L也是能夠的
        System.out.println(num1);// 100

        // 左邊是double類型,右邊是float類型,左右不同。
        // float --> double,符合從小到大的規則。
        // 也發生了自動類型轉換。
        double num2 = 2.5F;
        System.out.println(num2);//2.5

        // 左邊是float類型,右邊是long類型,左右不同。
        // long --> flaot;範圍是float更大一些,符合從小到大的規則;
        // 也發生了自動類型轉換。
        float   num3 = 30L;
        System.out.println(num3); // 30.3
    }
}

二、強制類型轉換(顯示)Demo02DataType.javaide

/*
強制類型轉換
    1. 特色:代碼須要進行特殊的格式處理,不能自動完成。
    2. 格式:範圍小的類型 範圍小的變量名 = (範圍小的類型) 本來範圍大的數據;

注意事項:
    1. 強制類型轉換通常不推薦使用,由於有可能發生精度損失、數據溢出。
    2. byte/short/char這三種類型均可以發生數學運算,例如加法「+」.
    3. byte/short/char這三種類型在運算的時候,都會被首先提高成爲int類型,而後再計算。
    4. boolean類型不能發生數據類型轉換
*/
public class Demo02DataType {
    public static void main(String[] args) {
        // 左邊是int類型,右邊是long類型,不同
        // long --> int,不是從小到大
        // 不能發生自動類型轉換!
        // 格式:範圍小的類型 範圍小的變量名 = (範圍小的類型) 本來範圍大的數據;
        int num = (int) 100L;
        System.out.println(num);

        // long強制轉換成爲int類型
        int num2 = (int) 6000000000L;
        System.out.println(num2); // 1705032704(此時發生了數據溢出)

        // double --> int,強制類型轉換
        int num3 = (int) 3.99;
        System.out.println(num3); // 3,這並非四捨五入,全部的小數位都會被捨棄掉

        char zifu1 = 'A'; // 這是一個字符型變量,裏面是大寫字母A
        System.out.println(zifu1 + 1); // 66,也就是大寫字母A被當作65進行處理
        // 計算機的底層會用一個數字(二進制)來表明字符A,就是65
        // 一旦char類型進行了數學運算,那麼字符就會按照必定的規則翻譯成爲一個數字

        byte num4 = 40; // 注意!右側的數值大小不能超過左側的類型範圍
        byte num5 = 50;
        // byte + byte --> int + int --> int
        int result1 = num4 + num5;
        System.out.println(result1); // 90

        short num6 = 60;
        // byte + short --> int + int --> int
        // int強制轉換爲short:注意必須保證邏輯上真實大小原本就沒有超過short範圍,不然會發生數據
        溢出
        short result2 = (short) (num4 + num6);
        System.out.println(result2); // 100
    }
}

三、數據溢出:
在這裏插入圖片描述性能

四、ASCII編碼表:
48 --> 0
65 --> A
97 --> a
代碼庫:Demo03DataTypeChar.java編碼

/*
數字和字符的對照關係表(編碼表):

ASCII碼錶:American Standard Code for Information Interchange,美國信息交換標準代碼。
Unicode碼錶:萬國碼。也是數字和符號的對照關係,開頭0-127部分和ASCII徹底同樣,可是從128開始包含有更
多字符。

48 - '0'
65 - 'A'
97 - 'a'
*/
public class Demo03DataTypeChar {
    public static void main(String[] args) {
        char zifu1 = '1';
        System.out.println(zifu1 + 0); // 49

        char zifu2 = 'A'; // 其實底層保存的是65數字

        char zifu3 = 'c';
        // 左側是int類型,右邊是char類型,
        // char --> int,確實是從小到大
        // 發生了自動類型轉換
        int num = zifu3;
        System.out.println(num); // 99

        char zifu4 = '中'; // 正確寫法
        System.out.println(zifu4 + 0); // 20013
    }
}

2、運算符:
一、運算符:翻譯

算數運算符包括:
+ 加法運算,字符串鏈接運算
- 減法運算
* 乘法運算
/ 除法運算
% 取模運算,兩個數字相除取餘數
++、-- 自增自減運算

代碼庫:Demo04Operator.javacode

/* 
運算符:進行特定操做的符號。例如:+
表達式:用運算符連起來的十字叫作表達式。例如: 20 + 5 、 又例如:a + b

四則運算:
加: +
減: -
乘: *
除: /

取模(取餘數):%

首先計算獲得表達式的結果,而後在打印輸出這個結果。
複習一下小學一年級的除法公式。
被除數 / 除數 = 商 ... 餘數

對於一個整數的表達式來講,除法用的是整除;整數除以整數。結果仍然是整數;只看商。不看餘數;
只有對於整數的除法來講,取模運算符纔有餘數的意義。

注意事項:
    一、一旦運算當中有不一樣類型的數據,那麼結果將會是數據類型範圍大的那種。
*/
public class Demo04perator(
    public static void main(Stringp[] args){
    // 兩個常量之間能夠進行數學運算
    System.out.println(20 + 30);

    // 兩個變量之間也能夠進行數學運算
    int a = 20;
    int b = 30;
    System.out.println( a - b ); // -10

    // 變量和常量之間能夠混合使用
    System.out.println(a * 10); // -200

    int x = 10;
    int y = 3;

    int resultl = x / y;
    System.out.println(resultl); // 3 

    int result2 = 2 % y ;
    System.out.println(result2); // 餘數、摸,1

    // int + double --> double + double --> double 
    double result3 = x + 2.5;
    System.out.println(result3); // 12.5
    }
}

二、算數運算符_加號的多種用法
代碼庫:Demo05Plus.javaorm

/*
四則運算當中的加號「+」有常見的三種用法:

1. 對於數值來講,那就是加法。
2. 對於字符char類型來講,在計算以前,char會被提高成爲int,而後再計算。
char類型字符,和int類型數字,之間的對照關係表:ASCII、Unicode
3. 對於字符串String(首字母大寫,並非關鍵字)來講,加號表明字符串鏈接操做。
任何數據類型和字符串進行鏈接的時候,結果都會變成字符串
*/
public class Demo05Plus {
    public static void main(String[] args) {
        // 字符串類型的變量基本使用
        // 數據類型 變量名稱 = 數據值;
        String str1 = "Hello";
        System.out.println(str1); // Hello

        System.out.println("Hello" + "World"); // HelloWorld

        String str2 = "Java";
        // String + int --> String
        System.out.println(str2 + 20); // Java20

        // 優先級問題
        // String + int + int
        // String       + int
        // String
        System.out.println(str2 + 20 + 30); // Java2030

        System.out.println(str2 + (20 + 30)); // Java50
    }
}

三、算數運算符_自增自減運算符:Demo06Operator.javablog

/*
自增運算符:++
自減運算符:--

基本含義:讓一個變量漲一個數字1,或者讓一個變量降一個數字1
使用格式:寫在變量名稱以前,或者寫在變量名稱以後。例如:++num,也能夠num++
使用方式:
    1. 單獨使用:不和其餘任何操做混合,本身獨立成爲一個步驟。
    2. 混合使用:和其餘操做混合,例如與賦值混合,或者與打印操做混合,等。
使用區別:
    1. 在單獨使用的時候,前++和後++沒有任何區別。也就是:++num;和num++;是徹底同樣的。
    2. 在混合的時候,有【重大區別】
        A. 若是是【前++】,那麼變量【馬上立刻+1】,而後拿着結果進行使用。    【先加後用】
        B. 若是是【後++】,那麼首先使用變量原本的數值,【而後再讓變量+1】。   【先用後加】

注意事項:
    只有變量才能使用自增、自減運算符。常量不可發生改變,因此不能用。
*/
public class Demo06Operator {
    public static void main(String[] args) {
        int num1 = 10;
        System.out.println(num1); // 10
        ++num1; // 單獨使用,前++
        System.out.println(num1); // 11
        num1++; // 單獨使用,後++
        System.out.println(num1); // 12
        System.out.println("=================");

        // 與打印操做混合的時候
        int num2 = 20;
        // 混合使用,先++,變量馬上立刻變成21,而後打印結果21
        System.out.println(++num2); // 21
        System.out.println(num2); // 21
        System.out.println("=================");

        int num3 = 30;
        // 混合使用,後++,首先使用變量原本的30,而後再讓變量+1獲得31
        System.out.println(num3++); // 30
        System.out.println(num3); // 31
        System.out.println("=================");

        int num4 = 40;
        // 和賦值操做混合
        int result1 = --num4; // 混合使用,前--,變量馬上立刻-1變成39,而後將結果39交給result1
        變量
        System.out.println(result1); // 39
        System.out.println(num4); // 39
        System.out.println("=================");

        int num5 = 50;
        // 混合使用,後--,首先把原本的數字50交給result2,而後我本身再-1變成49
        int result2 = num5--;
        System.out.println(result2); // 50
        System.out.println(num5); // 49
        System.out.println("=================");

        int x = 10;
        int y = 20;
        // 11 + 20 = 31
        int result3 = ++x + y--;
        System.out.println(result3); // 31
        System.out.println(x); // 11
        System.out.println(y); // 19

        // 30++; // 錯誤寫法!常量不可使用++或者--
    }
}

四、賦值運算符:Demo07Operator.java圖片

/*
賦值運算符分爲:

基本賦值運算符:就是一個等號「=」,表明將右側的數據交給左側的變量。
    int a = 30;

複合賦值運算符:
    +=      a += 3      至關於     a = a + 3
    -=      b -= 4      至關於     b = b - 4
    *=      c *= 5      至關於     c = c * 5
    /=      d /= 6      至關於     d = d / 6
    %=      e %= 7      至關於     e = e % 7

注意事項:
    1. 只有變量才能使用賦值運算符,常量不能進行賦值。
    2. 複合賦值運算符其中隱含了一個強制類型轉換。
*/
public class Demo07Operator {
    public static void main(String[] args) {
        int a = 10;
        // 按照公式進行翻譯:a = a + 5
        // a = 10 + 5;
        // a = 15;
        // a原本是10,如今從新賦值獲得15
        a += 5; 
        System.out.println(a); // 15

        int x = 10;
        // x = x % 3;
        // x = 10 % 3;
        // x = 1;
        // x原本是10,如今從新賦值獲得1
        x %= 3;
        System.out.println(x); // 1

        // 50 = 30; // 常量不能進行賦值,不能寫在賦值運算符的左邊。錯誤寫法!

        byte num = 30;
        // num = num + 5;
        // num = byte + int
        // num = int + int
        // num = int
        // num = (byte) int
        num += 5;
        System.out.println(num); // 35
    }
}
五、比較運算符:
比較運算符包括
== 比較運算符兩邊數據是否相等,相等結果是true
< 比較符號左邊的數據是否小於右邊的數據,若是小於結果是true
> 比較符號左邊的數據是否大於右邊的數據,若是大於結果是true。
<= 比較符號左邊的數據是否小於或等於右邊的數據,若是小於結果是ture
>= 比較符號左邊的數據是否大於或等於右邊的數據,若是小於結果是true
!= 不等於符號,若是符號兩邊的數據不相等,結果是true

比較運算符,是兩個數據之間進行比較的運算,運算結果都是布爾值true或者false
代碼庫:Demo08Operator.java字符串

/*
比較運算符:
大於:     >
小於:     <
大於等於:   >=
小於等於:   <=
相等:     ==  【兩個等號連寫纔是相等,一個等號表明的是賦值】
不相等:    !=

注意事項:
1. 比較運算符的結果必定是一個boolean值,成立就是true,不成立就是false
2. 若是進行屢次判斷,不能連着寫。
數學當中的寫法,例如:1 < x < 3
程序當中【不容許】這種寫法。
*/
public class Demo08Operator {
    public static void main(String[] args) {
        System.out.println(10 > 5); // true
        int num1 = 10;
        int num2 = 12;
        System.out.println(num1 < num2); // true
        System.out.println(num2 >= 100); // false
        System.out.println(num2 <= 100); // true
        System.out.println(num2 <= 12); // true
        System.out.println("===============");

        System.out.println(10 == 10); // true
        System.out.println(20 != 25); // true
        System.out.println(20 != 20); // false

        int x = 2;
        // System.out.println(1 < x < 3); // 錯誤寫法!編譯報錯!不能連着寫。
    }
}
六、邏輯運算符:
邏輯運算符包括:
&&短路與 一、兩邊都是true,結果是true 二、一遍是false,結果是false短路特色:符號左邊是false,右邊不在運算
雙豎線+短路或 一、兩邊都是false,結果是false二、一邊是true,結果是true,短路特色:符號左邊是true,右邊再也不運算
單豎線+! 取反 一、!true結果是false 二、!false結果是true

邏輯運算符:是用來連接兩個布爾類型結果的運算符,運算符結果都是布爾值true或者false
代碼庫:Demo09Logic.java

/*
與(而且)       &&  所有是true,纔是true,負責不然就是false
或(或者)       ||  只要有至少一個是true,就是true。全都是false。纔是false
非(取反)       !   原本是true,變成false,原本是false,變成true

與 「&&」 或「||」 具備短路效果;若是根據左邊已經能夠判斷獲得最終結果,那麼右邊的代碼將不在執行,從而節
省必定的性能。

注意事項:
        一、邏輯運算符,只能用於Boolean值。
        二、與、或須要左右有一個Boolean值,可是取反只要有惟一的一個Boolean值便可
        三、與、或兩種運算符,若是有多個條件,能夠連續寫。
            兩個條件;條件A && 條件B
            多個條件;條件A && 條件B && 條件C

        TIPS:
        對於1 < x < 3的狀況,應該拆成兩個部分,而後使用與運算符連接起來;
        int x =2;
        1 < x && x < 3
*/

public class Demo09Logic{
    public static vodi main(string[] args){
        System.out.println(true && false);  // false
        // true && true --> true
        System.out.println(3 < 4 &&  10 > 5);   // true 
        System.out.println("=================");

        System.out.println(true || false); // true
        System.out.println(true || true);   // true
        System.out.println(false || false); // false
        System.out.println("=================");

        System.out.println(true); // true
        System.out.println(!true); // false
       System.out.println("=================");

        int a = 10;
        System.out.println(3 > 4 && ++a < 100); // false
        System.out.println(a); // 10
        System.out.println("=================");

        int b = 20
        // true || ----
        System.out.println(3 < 4 || ++b < 100); // true
        System.out.println(b); // 20      
    }
}

七、三元運算符:
代碼庫:Demo10Operator.java

/*
一元運算符:只須要一個數據就能夠進行操做的運算符。例如:取反!、自增++、自減--
二元運算符:須要兩個數據才能夠進行操做的運算符。例如:加法+、賦值=
三元運算符:須要三個數據才能夠進行操做的運算符。

格式:
數據類型 變量名稱 = 條件判斷 ? 表達式A : 表達式B;

流程:
首先判斷條件是否成立:
    若是成立爲true,那麼將表達式A的值賦值給左側的變量;
    若是不成立爲false,那麼將表達式B的值賦值給左側的變量;
兩者選其一。

注意事項:
1. 必須同時保證表達式A和表達式B都符合左側數據類型的要求。
2. 三元運算符的結果必須被使用。
*/
public class Demo10Operator {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        // 數據類型 變量名稱 = 條件判斷 ? 表達式A : 表達式B;
        // 判斷a > b是否成立,若是成立將a的值賦值給max;若是不成立將b的值賦值給max。兩者選其一
        int max = a > b ? a : b; // 最大值的變量
        System.out.println("最大值:" + max); // 20

        // int result = 3 > 4 ? 2.5 : 10; // 錯誤寫法!

        System.out.println(a > b ? a : b); // 正確寫法!

        // a > b ? a : b; // 錯誤寫法!
    }
}
相關文章
相關標籤/搜索