[英]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.