java 數據類型轉換 ascii 運算符


 

一,數據類型轉換

當數據的類型不一致時,將會發生數據類型轉換

 

(1),自動類型轉換(隱式)

特點:代碼不需要進行特殊處理,自動完成。

規則:數據范圍從小轉換到大(byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double

 

代碼示例:

 

package cn.itcate.day2demo;

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

        long num1 = 100;
        System.out.println(num1); //100
        // 左邊是int類型,右邊是long類型,左右不一樣
        // int---->long,符合從小范圍到大氛圍的要求
        // 這一行代碼發生了自動類型轉換

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

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

 

 

 

 

 

(2),強制轉換(顯式)

當我們將浮點數類型賦值到int類型,將會產生編譯失敗。

int i =  3.14; // 錯誤

 

double類型內存占8個字節,int類型內存占4個字節。3.14是double類型,取值氛圍打於int類型。違反從小范圍轉換到大范圍的原則。

 

強制類型轉換 :能將 取值范圍大的類型 強制轉換成 取值范圍小的類型 。

格式:數據類型  變量名  =  (數據類型) 被轉數據類型;

 

代碼示例:

package cn.itcate.day2demo;

public class Demo02DataType {
    public static void main(String[] args) {
        int num = (int) 100L;
        System.out.println(num); // 100
        // 左邊是int類型,右邊是long類型,不一樣
        // long --> int,不是從小到大
        // 不能發生自動類型轉換!
        // 格式:范圍小的類型 范圍小的變量名 = (范圍小的類型) 原本范圍大的數據;

        // long類型轉換為int類型
        int num2 = (int) 60000000L;
        System.out.println(num2); // 1705032704

        // double --> int, 強制類型轉換
        int num3 = (int) 3.99;
        System.out.println(num3);// 3

        char str = 'A';
        System.out.println(str + 1);// 66
        // 2. byte/short/char這三種類型都可以發生數學運算,例如加法“+”.
        //    3. byte/short/char這三種類型在運算的時候,都會被首先提升成為int類型,然后再計算。

        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

    }
}
View Code

 

注意:

1. 強制類型轉換一般不推薦使用,因為有可能發生精度損失、數據溢出。
2. byte/short/char這三種類型都可以發生數學運算,例如加法“+”.
3. byte/short/char這三種類型在運算的時候,都會被首先提升成為int類型,然后再計算。
4. boolean類型不能發生數據類型轉換

 

 

二,ASCII編碼表

數字和字符的對照關系表(編碼表)如圖:

ASCII碼表:American Standard Code for Information Interchange,美國信息交換標准代碼。
Unicode碼表:萬國碼。也是數字和符號的對照關系,開頭0-127部分和ASCII完全一樣,但是從128開始包含有更多字符。

 

 

 

 

 

 編碼表太長了,我們可以記住具有代表性的幾個:

 

 

 

 

代碼示例:

package cn.itcate.day2demo;

public class Demo03DataTyoeChar {
    public static void main(String[] args) {
        // 左側是int類型,右邊是char類型,
        // char --> int,確實是從小到大
        // 發生了自動類型轉換

        char zifu1 = '0';
        System.out.println(zifu1 + 0); // 48

        char zifu2 = 'A';
        System.out.println(zifu2 + 0);// 65

        char zifu3 = 'a';
        System.out.println(zifu3 + 0);// 97

        //超出ASCII的范圍,使用Unicode
        char zifu4 = ;
        System.out.println(zifu4 + 0);'中'




    }
}
View Code

 

注意:在char類型和int類型計算的過程中,char類型的字符先查詢編碼表,char類型提升為了int類型。char類型內存2個字節,int類型內存4個字節。

 

 

三,運算符

3.1 算法運算符

+        加法運算,字符串連接運算

-      減法運算

*      乘法運算

/      除法運算

%      取模運算,兩個數字相除取余數

++、 --      自增自減運算

 

運算符:進行特定操作的符號。例如:+、-
表達式:用運算符連起來的式子叫做表達式。例如:3 + 5。又例如:a + c

 

代碼示例:

View Code

 

 

注意:

  1. 對於一個整數的表達式來說,除法用的是整除,整數除以整數,結果仍然是整數。只看商,不看余數。
  2. 只有對於整數的除法來說,取模運算符才有余數的意義。
  3. 一旦運算當中有不同類型的數據,那么結果將會是數據類型范圍大的那種。

 

字符串的拼接(+)

1. 對於數值來說,那就是加法。
2. 對於字符char類型來說,在計算之前,char會被提升成為int,然后再計算。
char類型字符,和int類型數字,之間的對照關系表:ASCII、Unicode
3. 對於字符串String(首字母大寫,並不是關鍵字)來說,加號代表字符串連接操作。
任何數據類型和字符串進行連接的時候,結果都會變成字符串

 

package cn.itcate.day2demo;

public class Demo05Plus {
    public static void main(String[] args) {
        // 字符串類型的變量基本使用
        // 數據類型 變量名稱 = 數值值;
        String str1 = "Hello";
        System.out.println(str1); // Hello

        System.out.println("Hello" + "Hello"); // HelloWorld
        
        String str2 = "Java";
        // String + int --> String
        System.out.println(str2 + 20); // Java20
        
        // 優先級問題
        System.out.println(str2 + 20 + 30);// Java2030
        System.out.println(str2 + (20 + 30));// Java50
                 
    }
}
View Code

 

3.2 自增(++)和自減(--)

基本含義:讓一個數字變量加1,或者讓一個數字變量減1

使用格式:有前++和后++。例如:++num, num++

 

獨立運算:

  時前++和后++沒有區別

 

混合運算:

  和其他變量放在一起, 前 ++ 和 后 ++ 就產生了不同。

 

  A. 如果是【前++】,那么變量【立刻馬上+1】,然后拿着結果進行使用。 【先加后用】
  B. 如果是【后++】,那么首先使用變量本來的數值,【然后再讓變量+1】。 【先用后加】

 


  

變量 前 ++ :變量a自己加1,將加1后的結果賦值給b,也就是說a先計算。a和b的結果都是2。

代碼如下:

public static void main(String[] args) {
    int a = 1;
    int b = ++a;
    System.out.println(a);//計算結果是2
    System.out.println(b);//計算結果是2
}

 

 

變量 后 ++ :變量a先把自己的值1,賦值給變量b,此時變量b的值就是1,變量a自己再加1。a的結果是2,b的結果是1。

代碼如下:

public static void main(String[] args) {
    int a = 1;
    int b = a++;
    System.out.println(a);//計算結果是2
    System.out.println(b);//計算結果是1
}

 

 

代碼如下:

 

package cn.itcate.day2demo;

public class Demo06Operator {
    public static void main(String[] args) {
        int num1 = 10;
        // 前++
        ++num1;
        System.out.println(num1);
        // 后++
        num1++;
        System.out.println(num1);

        // 混合使用
        int x = 10;
        int y = 20;
        
        int result1 = ++x + y--;
        System.out.println(result1);// 31
        System.out.println(x); // 11
        System.out.println(y); // 19

    }
}
View Code

 

注意:變量才能使用自增、自減運算符。常量不可發生改變。

 

賦值運算

=    等於

+=    加等於

-+     減等於

*=     乘等於

/=      除等於

%=    取模等

 


代碼如下:

public static void main(String[] args){
    int i = 5;
    i+=5;//計算方式 i=i+5 變量i先加5,再賦值變量i
    System.out.println(i); //輸出結果是10
}

 

 

比較運算符

 

==     比較符號兩邊數據是否相等,相等結果是true。
<       比較符號左邊的數據是否小於右邊的數據,如果小於結果是true。
>       比較符號左邊的數據是否大於右邊的數據,如果大於結果是true。
<=     比較符號左邊的數據是否小於或者等於右邊的數據,如果小於結果是true。
>=     比較符號左邊的數據是否大於或者等於右邊的數據,如果小於結果是true。
! =     不等於符號 ,如果符號兩邊的數據不相等,結果是true

 

代碼如下:

public static void main(String[] args) {
    System.out.println(1==1);//true
    System.out.println(1<2);//true
    System.out.println(3>4);//false
    System.out.println(3<=4);//true
    System.out.println(3>=4);//false
    System.out.println(3!=4);//true
}

 

比較運算符

&& 短路與
1. 兩邊都是true,結果是true
2. 一邊是false,結果是false
短路特點:符號左邊是false,右邊不再運算


|| 短路或
1. 兩邊都是false,結果是false
2. 一邊是true,結果是true
短路特點: 符號左邊是true,右邊不再運算

 


! 取反
1. ! true 結果是false
2. ! false結果是true

 

 

public static void main(String[] args)  {
    System.out.println(true && true);//true
    System.out.println(true && false);//false
    System.out.println(false && true);//false,右邊不計算
 
    System.out.println(false || false);//falase
    System.out.println(false || true);//true
    System.out.println(true || false);//true,右邊不計算
 
    System.out.println(!false);//true
}

 

 

三元運算符

 

格式: 數據類型 變量名 = 布爾類型表達式? 結果1:結果2

 

三元運算符計算方式:
布爾類型表達式結果是 true,三元運算符整體結果為結果1,賦值給變量。
布爾類型表達式結果是 false,三元運算符整體結果為結果2,賦值給變量。

 

代碼示例:

public static void main(String[] args) {
    int i = (1==2 ? 100 : 200);
    System.out.println(i);//200
    int j = (3<=4 ? 500 : 600);
    System.out.println(j);//500
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM