Rumah >Java >javaTutorial >Contoh dan analisis mekanisme penukaran jenis automatik dalam Java

Contoh dan analisis mekanisme penukaran jenis automatik dalam Java

WBOY
WBOYke hadapan
2023-04-21 11:13:161715semak imbas

Analisis mekanisme penukaran jenis automatik

Ikhtisar

  • Penukaran jenis automatik juga dipanggil penukaran jenis tersirat

  • Ungkapan Jenis data dipromosikan secara automatik

Semua nilai bait, pendek dan aksara akan dinaikkan pangkat kepada jenis int.

Jika operan adalah jenis panjang, hasil yang dikira adalah jenis panjang; Jika operan adalah jenis apungan Ia adalah jenis berganda, dan hasil pengiraan adalah jenis berganda.

Jenis data hanya akan meningkat secara automatik, bukan menurun secara automatik

nilai int boleh diberikan kepada pembolehubah jenis panjang, terapung, berganda, tetapi tidak boleh ditetapkan kepada pembolehubah jenis bait, pendek, char

Jenis data lalai integer dalam Java ialah jenis int

Contoh dan analisis mekanisme penukaran jenis automatik dalam JavaSemua jenis dengan panjang lebih rendah daripada int (bait, pendek, char) Selepas operasi, hasilnya akan dinaikkan kepada jenis int

Contoh dan analisis mekanisme penukaran jenis automatik dalam Java Sudah tentu ada situasi berikut kerana apabila kita melakukan operasi penugasan, pengkompil java Pemproses boleh mengetahui dengan jelas sama ada hasil operasi melebihi julat nilai bait atau pendek, jadi bait a = 1 + 1 tidak melaporkan ralat. Sebab ralat kompilasi dalam bait di atas c = a + b ialah a dan b adalah kedua-dua pembolehubah Pengkompil tidak tahu sama ada hasil yang ditambah akan melebihi julat nilai bait, jadi pengkompil mempromosikan hasil kepada int. menaip.

Contoh dan analisis mekanisme penukaran jenis automatik dalam Java

Untuk meringkaskan:

Apabila pengkompil dengan jelas mengetahui bahawa hasil operasi integer tidak mencapai perwakilan julat int, hasil operasi jenis bait, pendek atau char tidak akan dinaikkan secara automatik kepada jenis int Contoh dan analisis mekanisme penukaran jenis automatik dalam Java

Apabila pengkompil dengan jelas mengetahui atau tidak mengetahui sama ada hasil operasi integer mencapai julat perwakilan int , pengkompil secara automatik akan menukar hasil operasi kepada int, walaupun ia pada asalnya jenis bait, pendek atau char.

Contoh dan analisis mekanisme penukaran jenis automatik dalam Java

Penukaran jenis automatik & penukaran jenis wajibBilakah penukaran jenis berlaku?

    Jawapan: Tugasan | Apabila jenis data kedua-dua belah tidak konsisten semasa operasi, penukaran jenis akan berlaku
  • seperti berikut:

  • Jalankan tangkapan skrin:

Klasifikasi penukaran jenis

Penukaran jenis automatik

public class TypeTest {
    public static void main(String[] args){
       	// 运算时发生的隐式类型转换,两整数相除得到的还是一个整数
        byte a  = 3;
        byte b = 4;
        int num  =  a + b;
        System.out.println(num); // 7
        // 赋值时发生的隐式类型转换
        int ch = '0';
        System.out.println(ch); // 48
        // 运算时发生的强制类型转换
        byte a1 = 12;
        byte a2 = 12;
        byte num1 = (byte)(a1  + a2);
        System.out.println(num1); // 24
        // 赋值时发生的强制类型转换
        short b3 = 1234;
        byte a3 = (byte) b3;
        System.out.println(a3); // -46
    }
}
Penukaran jenis paksa

Contoh dan analisis mekanisme penukaran jenis automatik dalam JavaPenukaran jenis automatik (penukaran jenis tersirat)

Peraturan:
    Dari kecil hingga besar, bait rendah secara automatik dinaikkan kepada bait tinggi
  • Jujukan:
  • bait (1 bait) – > pendek(2 bait)-- > int(4 bait) – (2 bait) -- > int (4 bait) – analisis:

Paparan kod:

Tangkapan skrin sedang dijalankan:

Nota:

bait, pendek dan aksara tidak boleh ditukar antara satu sama lain Paparan kod:

Contoh dan analisis mekanisme penukaran jenis automatik dalam JavaTangkapan skrin Ralat Kompilasi:

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 ch2 = 'b';
        long lg2 = ch2;
        System.out.println(lg2); // 98
        // char  -- >  double
        char ch3 = 'c';
        double dou = ch3;
        System.out.println(dou); // 99.0
        // char -- > float
        char ch4 = 'd';
        float  f3 = ch4;
        System.out.println(f3); // 100.0
    }
}

Walaupun apungan ialah 4 bait, apungan mewakili julat data yang lebih besar daripada yang panjang. Ambil perhatian bahawa saiz julat data tidak semestinya berkaitan dengan saiz bait

Paparan kod: Contoh dan analisis mekanisme penukaran jenis automatik dalam Java

Tangkapan skrin yang sedang dijalankan:

Jenis boolean tidak boleh mengambil bahagian dalam penukaran jenis

Paparan kod:
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 ch2 = sh;
        System.out.println(ch2);
    }
}

Tangkapan skrin ralat kompilasi:

Contoh dan analisis mekanisme penukaran jenis automatik dalam Java

Penukaran jenis paksa (penukaran jenis eksplisit )

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

Hantar manual dari besar ke kecil, bait tinggi ke bait rendah

Contoh dan analisis mekanisme penukaran jenis automatik dalam Java Pesanan:

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

double(8字节) – > float(4字节) – > long(8字节) – > int(4字节) – > char(2字节)

画图分析:

Contoh dan analisis mekanisme penukaran jenis automatik dalam Java

(掌握)格式:目标数据类型 变量名 = (目标数据类型) 变量 | 常量;

代码展示:

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 sh2 = 78;
	    bt = (byte) sh2;
        System.out.println(bt); // 78
    }
}

运行截图:

Contoh dan analisis mekanisme penukaran jenis automatik dalam Java

注意:

强制类型转换有数据丢失,一般不建议使用

代码展示:

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

运行截图:

Contoh dan analisis mekanisme penukaran jenis automatik dalam Java

Atas ialah kandungan terperinci Contoh dan analisis mekanisme penukaran jenis automatik dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam