最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中的類型自動轉(zhuǎn)換機制解析

 更新時間:2022年03月12日 11:09:16   作者:風兮~  
這篇文章主要介紹了java中的類型自動轉(zhuǎn)換機制,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

類型自動轉(zhuǎn)換機制解析

概述

  • 自動類型轉(zhuǎn)換也叫隱式類型轉(zhuǎn)換
  • 表達式的數(shù)據(jù)類型自動提升

所有的byte型、short型和char的值將被提升到int型。

如果一個操作數(shù)是long型,計算結(jié)果就是long型;

如果一個操作數(shù)是float型,計算結(jié)果就是float型;

如果一個操作數(shù)是double型,計算結(jié)果就是double型。

數(shù)據(jù)類型只會自動提升,不能自動降低

int值可以賦值給long、float、double型變量,不能賦值給byte、short、char型變量

對于函數(shù)的傳參也是一樣

當然,在有函數(shù)重載的情況下,java編譯器會自動選擇最匹配的函數(shù)進行調(diào)用

Java中整數(shù)默認的數(shù)據(jù)類型是int類型

所有長度低于int的類型(byte、short、char)在運算之后結(jié)果將會被提升為int型

當然還有以下的這種情況,這種情況是因為我們在進行賦值運算的時候,java編譯器可以明確知道運算的結(jié)果是否超過byte或short的取值范圍,所以 byte a = 1 + 1; 并沒有報錯。而上面 byte c = a + b; 編譯出錯的原因是因為a和b均為一個變量,相加的結(jié)果是否會超過byte的取值范圍編譯器并不知道,所以編譯器將結(jié)果提升為int型了。

小結(jié)一下:

  • 當編譯器明確知道整數(shù)的運算結(jié)果沒有到達int的表示范圍時,byte、short或char類型的運算結(jié)果不會被自動提升為int類型
  • 當編譯器明確知道或不清楚整數(shù)的運算結(jié)果是否到達int的表示范圍時,編譯器將會自動將運算的結(jié)果轉(zhuǎn)換成int,即使原來是byte、short或char類型。

自動類型轉(zhuǎn)換 & 強制類型轉(zhuǎn)換

什么時候會發(fā)生類型轉(zhuǎn)換

答: 賦值 | 運算時 ,兩邊數(shù)據(jù)類型不一致時就會發(fā)生類型轉(zhuǎn)換

如下:

public class TypeTest {
    public static void main(String[] args){
       	// 運算時發(fā)生的隱式類型轉(zhuǎn)換,兩整數(shù)相除得到的還是一個整數(shù)
        byte a  = 3;
        byte b = 4;
        int num  =  a + b;
        System.out.println(num); // 7
        // 賦值時發(fā)生的隱式類型轉(zhuǎn)換
        int ch = '0';
        System.out.println(ch); // 48
        // 運算時發(fā)生的強制類型轉(zhuǎn)換
        byte a1 = 12;
        byte a2 = 12;
        byte num1 = (byte)(a1  + a2);
        System.out.println(num1); // 24
        // 賦值時發(fā)生的強制類型轉(zhuǎn)換
        short b3 = 1234;
        byte a3 = (byte) b3;
        System.out.println(a3); // -46
    }
}

運行截圖:

在這里插入圖片描述

類型轉(zhuǎn)換分類

  • 自動類型轉(zhuǎn)換
  • 強制類型轉(zhuǎn)換

自動類型轉(zhuǎn)換(隱式類型轉(zhuǎn)換)

規(guī)則:從小到大 ,低字節(jié)向高字節(jié)自動提升

順序:

byte(1字節(jié)) – > short(2字節(jié))-- > int(4字節(jié)) – > long(8字節(jié)) --> float(4字節(jié)) – > double(8字節(jié))

char (2字節(jié))-- > int(4字節(jié)) – > long(8字節(jié)) --> float(4字節(jié)) – > double(8字節(jié))

畫圖分析:

在這里插入圖片描述

代碼展示:

public class TypeDemo {
    public static void main(String[] agrs){
        // byte -- > short
        byte b1 = 127;
        short s1 = b1;
        System.out.println(s1); // 127
        // short -- > int 
        short  s2 = 30000;
        int i = s2;
        System.out.println(i); // 30000
        // int  -- > long
        int num = 2100000000;
        long lg = num;
        System.out.println(num); // 2100000000
        // long -- > float 
        long lg1 = 200000000000000L;
 	    float f1 = lg1;
        System.out.println(f1);// 2.00000001E14
        // float -- > double 
        float f2 = 3.14f;
        double d1 = f2;
 	    System.out.println(d1); // 3.140000104904175
        // char -- > int
	    char ch = 'a';
        int i1 = ch ;
        System.out.println(i1); // 97
        // char -- > long
        char ch1 = 'b';
        long lg2 = ch1;
        System.out.println(lg2); // 98
        // char  -- >  double
        char ch2 = 'c';
        double dou = ch2;
        System.out.println(dou); // 99.0
        // char -- > float
        char ch3 = 'd';
        float  f3 = ch3;
        System.out.println(f3); // 100.0
    }
}

運行截圖:

在這里插入圖片描述

注意:

byte、short不能和char進行相互轉(zhuǎn)換

代碼展示:

public class TypeDemo2 {
    public static void main(String[] agrs){
 	    // byte -- > char
        byte bt = 127;
        char ch = bt;
        System.out.println(ch);
        // short -- > char
        short sh = 12;
        char ch1 = sh;
        System.out.println(ch1);
    }
}

編譯錯誤截圖:

在這里插入圖片描述

float雖然是4個字節(jié),但是float比long表示的數(shù)據(jù)范圍更大。說明數(shù)據(jù)范圍的大小和字節(jié)的大小不一定相關(guān)

代碼展示:

public class TypeDemo3 {
    public static void main(String[] agrs){
        long lg = 20000000000000L;
        float f1 = lg;
        System.out.println(f1); // 1.99999997E13
    }
}

運行截圖:

在這里插入圖片描述

boolean類型不能參與類型轉(zhuǎn)換

代碼展示:

public class TypeDemo4 {
    public static void main(String[] agrs) {
        boolean flag = 12;
        int flag1 = flag;
        System.out.println(flag1);
    }
}

編譯錯誤截圖:

在這里插入圖片描述

強制類型轉(zhuǎn)換(顯式類型轉(zhuǎn)換)

規(guī)則:從大到小,高字節(jié)向低字節(jié)手動強制轉(zhuǎn)換

順序:

double(8字節(jié)) – > float(4字節(jié)) – > long(8字節(jié)) – > int(4字節(jié)) – > short (2字節(jié))-- > byte(1字節(jié))

double(8字節(jié)) – > float(4字節(jié)) – > long(8字節(jié)) – > int(4字節(jié)) – > char(2字節(jié))

畫圖分析:

在這里插入圖片描述

(掌握)格式:目標數(shù)據(jù)類型 變量名 = (目標數(shù)據(jù)類型) 變量 | 常量;

代碼展示:

public class TypeDemo5 {
    public static void main(String[] agrs){
        // float -- > long
        // final float  PI = 3.14f;
        // long num = (long) PI; // 3
        // float little =  3.14f;
        // long num = (long)little; // 3
 	    long num = (long)3.14f;      
        System.out.println(num);// 3 
        // double -- > float 
        // double dou = 3.14;
        // float little1 = (float)dou; // 3.14
        //  float little1 = (float) 3.14d;  // 3.14
        final double  dou = 3.14;
        float little1 = (float)dou;
        System.out.println(little1); // 3.14
        // long -- > int 
        // long  num1 = 2000000000000L;
        // int   num2 = (int)num1;  // -1454759936
        // int num2 = (int)2000000000000L; // -1454759936
       	final  long num1 = 2000000000000L;
        int num2 = (int)num1;
        System.out.println(num2);  // -1454759936
        // int --> short
        // int  num3  = 12;
        // short num4 = (short)num3; // 12
        // short num4 = (short)40000; // -25536
        final int num3 = 60;
        short num4 = (short)num3;
        System.out.println(num4); // 60
        // short -- > byte
        final short sh = 12345;
        byte bt = (byte)sh;
        System.out.println(bt); // 57
        short sh1 = 78;
	    bt = (byte) sh1;
        System.out.println(bt); // 78
    }
}

運行截圖:

在這里插入圖片描述

注意:

強制類型轉(zhuǎn)換有數(shù)據(jù)丟失,一般不建議使用

代碼展示:

public  class TypeDemo6 {
   public static void main(String[] agrs) {
       short a = 1245;
       byte b = (byte)a;
       System.out.println(b);
   } 
}

運行截圖:

在這里插入圖片描述

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 學習不同 Java.net 語言中類似的函數(shù)結(jié)構(gòu)

    學習不同 Java.net 語言中類似的函數(shù)結(jié)構(gòu)

    這篇文章主要介紹了學習不同 Java.net 語言中類似的函數(shù)結(jié)構(gòu),函數(shù)式編程語言包含多個系列的常見函數(shù)。但開發(fā)人員有時很難在語言之間進行切換,因為熟悉的函數(shù)具有不熟悉的名稱。函數(shù)式語言傾向于基于函數(shù)范例來命名這些常見函數(shù)。,需要的朋友可以參考下
    2019-06-06
  • Java 深拷貝與淺拷貝的分析

    Java 深拷貝與淺拷貝的分析

    本文主要介紹java 的深拷貝和淺拷貝,這里通過實例代碼對深拷貝和淺拷貝做了詳細的比較,希望能幫到有需要的小伙伴
    2016-07-07
  • java long轉(zhuǎn)String +Codeforces110A案例

    java long轉(zhuǎn)String +Codeforces110A案例

    這篇文章主要介紹了java long轉(zhuǎn)String +Codeforces110A案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • SpringBoot中事務(wù)失效的原因詳解

    SpringBoot中事務(wù)失效的原因詳解

    這篇文章主要介紹了SpringBoot中事務(wù)失效的原因詳解,spring中的事務(wù)是依賴AOP的,AOP是通過動態(tài)代理實現(xiàn)的,只有通過代理類訪問的方法才能被攔截,需要的朋友可以參考下
    2023-10-10
  • IDEA的基本使用(讓你的IDEA有飛一般的感覺)

    IDEA的基本使用(讓你的IDEA有飛一般的感覺)

    這篇文章主要介紹了IDEA的基本使用(讓你的IDEA有飛一般的感覺),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • Java實現(xiàn)word/pdf轉(zhuǎn)html并在線預覽

    Java實現(xiàn)word/pdf轉(zhuǎn)html并在線預覽

    這篇文章主要為大家詳細介紹了如何利用Java語言實現(xiàn)word、pdf文件轉(zhuǎn)html并在線預覽的功能,文中的示例代碼講解詳細,需要的可以參考一下
    2023-05-05
  • 一文快速掌握Spring?Cloud?Stream

    一文快速掌握Spring?Cloud?Stream

    這篇文章主要介紹了Spring?Cloud?Stream詳解,本篇文章所涉及到的demo練習使用的cloud?2021.0.3+?springboot2.6.8,通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • Spring-webflux?響應式編程的實例詳解

    Spring-webflux?響應式編程的實例詳解

    Spring 提供了兩個并行堆棧,一種是基于帶有 Spring MVC 和 Spring Data 結(jié)構(gòu)的 Servlet API,另一個是完全反應式堆棧,它利用了 Spring WebFlux 和 Spring Data 的反應式存儲庫,這篇文章主要介紹了Spring-webflux?響應式編程,需要的朋友可以參考下
    2022-09-09
  • java token生成和校驗的實例代碼

    java token生成和校驗的實例代碼

    這篇文章主要介紹了java token生成和校驗的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • java如何讀取Excel簡單模板

    java如何讀取Excel簡單模板

    這篇文章主要為大家詳細介紹了java如何讀取Excel簡單模板,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10

最新評論

维西| 济南市| 肥乡县| 彰化县| 仪陇县| 商南县| 丰县| 瑞昌市| 巴东县| 留坝县| 毕节市| 襄樊市| 岱山县| 南投县| 清镇市| 永嘉县| 女性| 沈丘县| 策勒县| 海阳市| 松江区| 盈江县| 九江县| 齐河县| 阜新| 广德县| 南华县| 盐山县| 秭归县| 泸溪县| 平江县| 综艺| 怀仁县| 双鸭山市| 祥云县| 旬邑县| 太谷县| 泽州县| 河西区| 尼木县| 普宁市|