簡體   English   中英

將Character轉換為char並將char轉換為Character Java

[英]Casting Character to char and char to Character Java

有人可以解釋一下為什么這段代碼能正常工作嗎?

import java.io.*;

public class Array {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        FileOutputStream fo=new FileOutputStream("Character.dat");
        ObjectOutputStream oos=new ObjectOutputStream(fo);
        FileInputStream fi=new FileInputStream("Character.dat");
        ObjectInputStream ois=new ObjectInputStream(fi);
        Character c = 'h';
        oos.writeObject(c);
        Character arr = (char)ois.readObject();
        System.out.println(arr);
        fo.close();
        fi.close();
        oos.close();
        ois.close();
    }
}

在第10行中,我創建了一個Character並在第11行中將其序列化並寫入了文件。 在第12行中,我反序列化了該對象,它返回了對Object的引用,因此我們必須將其向下轉換為Character 在第12行中,我將其向下轉換為char(它是原始數據類型而不是類),並且仍然可以正常工作。 這是為什么?

我認為由於Java的自動裝箱在幕后進行,您從對象到char的轉換,然后再分配給Character的轉換仍在起作用。 鏈接可能有助於更深入地解釋它。

Java使用一種稱為自動裝箱和-unboxing的技術。 這提供了從原語到其船體類以及其后的內置轉換。 這就是為什么您可以編寫Character c = 'h'而不是Character c = new Character('h'); 首先。

您可能需要謹慎使用此技術,因為它會對性能產生重大影響

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM